亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

jquery中$each()方法的使用指南

2024-05-06 16:19:03
字體:
來源:轉載
供稿:網友

jQuery 中的each函數 很方便,$.each ()函數封裝了十分強大的遍歷功能,它可以遍歷一維數組、多維數組、DOM , JSON 等等,在javaScript 開發過程中使用$each可以大大的減輕我們的工作量,這里貼一個簡單的模仿each的函數,只能處理數組類型的對象。

$.each()與$(selector).each()不同, 后者專用于jquery對象的遍歷, 前者可用于遍歷任何的集合(無論是數組或對象),如果是數組,回調函數每次傳入數組的索引和對應的值(值亦可以通過this 關鍵字獲取,但javascript總會包裝this 值作為一個對象—盡管是一個字符串或是一個數字),方法會返回被遍歷對象的第一參數.

each()方法能使DOM循環結構簡潔,不容易出錯。each()函數封裝了十分強大的遍歷功能,使用也很方便,它可以遍歷一維數組、多維數組、DOM, JSON 等等

在javaScript開發過程中使用$each可以大大的減輕我們的工作量。

each的幾種常用的用法

下面提一下

each處理一維數組

 

 
  1. var arr1 = [ "aaa""bbb""ccc" ];  
  2. $.each(arr1, function(i,val){  
  3. alert(i);  
  4. alert(val); 
  5. }); 

alert(i)將輸出0,1,2

alert(val)將輸出aaa,bbb,ccc

each處理二維數組

 

 
  1. var arr2 = [['a''aa''aaa'], ['b''bb''bbb'], ['c''cc''ccc']]  
  2.   $.each(arr, function(i, item){  
  3. alert(i);  
  4. alert(item);  
  5.   }); 

arr2為一個二維數組,item相當于取這二維數組中的每一個數組。

item[0]相對于取每一個一維數組里的第一個值

alert(i)將輸出為0,1,2,因為這二維數組含有3個數組元素

alert(item)將輸出為 ['a', 'aa', 'aaa'],['b', 'bb', 'bbb'],['c', 'cc', 'ccc']

對此二位數組的處理稍作變更之后

 

 
  1. var arr = [['a''aa''aaa'], ['b''bb''bbb'], ['c''cc''ccc']]  
  2.   $.each(arr, function(i, item){  
  3.   $.each(item,function(j,val){ 
  4.      alert(j); 
  5.     alert(val); 
  6.  });  
  7. }); 

alert(j)將輸出為0,1,2,0,1,2,0,1,2

alert(val)將輸出為a,aa,aaa,b,bb,bbb,c,cc,ccc

each處理json數據,這個each就有更厲害了,能循環每一個屬性

 

 
  1. var obj = { one:1, two:2, three:3};  
  2. each(obj, function(key, val) {  
  3. alert(key);  
  4. alert(val);  
  5. }); 

這里alert(key)將輸出one two three

alert(val)將輸出one,1,two,2,three,3

這邊為何key不是數字而是屬性呢,因為json格式內是一組無序的屬性-值,既然無序,又何來數字呢。

而這個val等同于obj[key]

ecah處理dom元素,此處以一個input表單元素作為例子。

如果你dom中有一段這樣的代碼

 

 
  1. <input name="aaa" type="hidden" value="111" /> 
  2. <input name="bbb" type="hidden" value="222" /> 
  3. <input name="ccc" type="hidden" value="333" /> 
  4. <input name="ddd" type="hidden" value="444"/> 

然后你使用each如下

 

 
  1. $.each($("input:hidden"), function(i,val){  
  2. alert(val); 
  3. alert(i); 
  4. alert(val.name); 
  5. alert(val.value);  
  6. }); 

那么,alert(val)將輸出[object HTMLInputElement],因為它是一個表單元素。

alert(i)將輸出為0,1,2,3

alert(val.name);將輸出aaa,bbb,ccc,ddd,如果使用this.name將輸出同樣的結果

alert(val.value); 將輸出111,222,333,444,如果使用this.value將輸出同樣的結果

如果將以上面一段代碼改變成如下的形式

 

 
  1. $("input:hidden").each(function(i,val){ 
  2. alert(i); 
  3. alert(val.name); 
  4. alert(val.value);  
  5. }); 

可以看到,輸出的結果是一樣的,至于兩種寫法究竟區別在哪,我也還不知。此改變運用到上面幾段數組的操作也會輸出同樣的結果。

這樣,幾個例子的實際結果已經得到答案。接著再繼續往下研究,總不能知其然不知其所以然。

從以上的例子中可知jQuery和jQuery對象都實現了該方法,對于jQuery對象,只是把each方法簡單的進行了委托:把jQuery對象作為第一個參數傳遞給jQuery的each方法。

看下jQuery中的each實現

(網絡摘抄)

 

 
  1. function (object, callback, args) { 
  2. //該方法有三個參數:進行操作的對象obj,進行操作的函數fn,函數的參數args 
  3. var name, i = 0,length = object.length; 
  4. if (args) { 
  5. if (length == undefined) { 
  6. for (name in object) { 
  7. if (callback.apply(object[name], args) === false) { 
  8. break
  9. else { 
  10. for (; i < length;) { 
  11. if (callback.apply(object[i++], args) === false) { 
  12. break
  13. else { 
  14. if (length == undefined) { 
  15. for (name in object) { 
  16. if (callback.call(object[name], name, object[name]) === false) { 
  17. break
  18. else { 
  19. for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {} 
  20. /*object[0]取得jQuery對象中的第一個DOM元素,通過for循環, 
  21. 得到遍歷整個jQuery對象中對應的每個DOM元素,通過 callback.call( value,i,value); 
  22. 將callback的this對象指向value對象,并且傳遞兩個參數,i表示索引值,value表示DOM元素; 
  23. 其中callback是類似于 function(index, elem) { ... } 的方法。 
  24. 所以就得到 $("...").each(function(index, elem){ ... }); 
  25. */ 
  26. return object; 

jquery會自動根據傳入的元素進行判斷,然后在根據判斷結果采取apply還是call方法的處理。在fn的實現中,可以直接采用this指針引用數組或是對象的子元素。

1.obj對象是數組

each方法會對數組中子元素的逐個進行fn函數調用,直至調用某個子元素返回的結果為false為止,也就是說,我們可以在提供的fn函數進行處理,使之滿足一定條件后就退出each方法調用。當each方法提供了arg參數時,fn函數調用傳入的參數為arg,否則為:子元素索引,子元素本身

2.obj 對象不是數組

該方法同1的最大區別是:fn方法會被逐次不考慮返回值的進行進行。換句話說,obj對象的所有屬性都會被fn方法進行調用,即使fn函數返回false。調用傳入的參數同1類似。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产久一一精品| 7m第一福利500精品视频| 精品亚洲国产视频| 国产精品久久久久久久久借妻| 欧美激情一级精品国产| 国内精品在线一区| 欧美日韩激情网| 国产免费亚洲高清| 日韩欧美a级成人黄色| 久久九九国产精品怡红院| 欧美专区在线视频| 日韩av在线免费播放| 欧美日韩国产综合视频在线观看中文| 精品中文字幕在线2019| 日韩av网站导航| 国内成人精品视频| 亚洲在线免费看| 欧美成人免费全部| 91九色在线视频| 亚洲欧美国产精品va在线观看| 日韩av在线网站| 成人伊人精品色xxxx视频| 91久久国产婷婷一区二区| 亚洲一区二区久久久久久| 亚洲男人第一网站| www.亚洲天堂| 亚洲视频在线观看视频| 国产日本欧美一区二区三区在线| 成人免费看片视频| 亚洲mm色国产网站| 福利二区91精品bt7086| 国产成人精品日本亚洲| 成人免费黄色网| 亚洲激情第一页| 欧美色欧美亚洲高清在线视频| 一级做a爰片久久毛片美女图片| 91美女片黄在线观看游戏| 欧美片一区二区三区| 国产日韩精品电影| 色噜噜狠狠狠综合曰曰曰| 欧美高清一级大片| 狠狠色香婷婷久久亚洲精品| 亚洲欧洲自拍偷拍| 久久人91精品久久久久久不卡| 亚洲欧美在线免费| 97精品久久久中文字幕免费| 日韩电影中文字幕在线| 亚洲国产精品yw在线观看| 亚洲综合在线播放| 亚洲少妇中文在线| 日韩欧美国产成人| 久久网福利资源网站| 国产一级揄自揄精品视频| 亚洲第一视频在线观看| 久久久久久久久久久国产| 日韩精品视频观看| 国产suv精品一区二区三区88区| 亚洲一区二区久久久久久| 91精品中文在线| 91色琪琪电影亚洲精品久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲欧美制服第一页| 国产视频久久久久| 国产精品女主播| 91在线观看免费网站| 日韩视频―中文字幕| 羞羞色国产精品| 久久伊人91精品综合网站| 亚洲人在线视频| 日韩电影第一页| 欧美超级免费视 在线| 国产69久久精品成人| 奇米影视亚洲狠狠色| 欧美激情国内偷拍| 亚洲精品98久久久久久中文字幕| 成人精品久久久| 欧美一级片一区| 亚洲国产天堂久久综合网| 欧美性猛交xxxx乱大交极品| 久久精品成人欧美大片古装| 国产精品精品视频一区二区三区| 亚洲免费中文字幕| 色哟哟入口国产精品| 亚洲国产精品人人爽夜夜爽| 国产视频精品在线| 久色乳综合思思在线视频| 中文字幕日韩高清| 国产91精品高潮白浆喷水| 成人久久久久久| 国产成人午夜视频网址| 亚洲一区二区三区成人在线视频精品| 久久精品视频免费播放| 国产在线播放91| 国产一区二区三区三区在线观看| 国产精品久久久999| 亚洲国产欧美一区| 色综合久久88色综合天天看泰| 亚洲激情在线观看| 国内精品视频久久| 国模极品一区二区三区| 91成人福利在线| 欧美日韩免费网站| 日韩专区中文字幕| 欧美在线亚洲在线| 精品视频久久久久久久| 欧美国产日韩在线| 中文字幕亚洲综合久久| 日韩国产欧美精品在线| 97在线免费观看视频| 欧美孕妇孕交黑巨大网站| 欧美激情一二三| 国产精品中文字幕久久久| 欧美精品激情在线观看| 国产在线不卡精品| 狠狠色狠色综合曰曰| 亚洲网站在线播放| 国产欧美亚洲视频| 欧美性猛交xxxx免费看久久久| 久久人人爽人人爽人人片亚洲| 精品中文字幕在线2019| 精品调教chinesegay| 亚洲va欧美va国产综合剧情| 久久资源免费视频| 中文字幕亚洲字幕| 丰满岳妇乱一区二区三区| 亚洲精品永久免费精品| 538国产精品一区二区在线| 日韩av电影在线免费播放| 亚洲国产欧美在线成人app| 日韩中文字幕视频在线观看| 国产精品jizz在线观看麻豆| 色综合色综合久久综合频道88| 国产午夜精品视频| 日韩在线免费视频| 日本高清不卡在线| 国产欧亚日韩视频| 欧美中文字幕在线视频| 亚洲精品视频免费在线观看| 色中色综合影院手机版在线观看| 日韩日本欧美亚洲| 欧美日韩免费在线观看| 91视频国产一区| 永久免费精品影视网站| 久久中文字幕在线| 欧美日韩国产一区中文午夜| 91大神在线播放精品| 国产精品免费视频xxxx| 美日韩丰满少妇在线观看| 国产成人精彩在线视频九色| 国产日韩精品在线| 欧美激情视频给我| 国产精品一久久香蕉国产线看观看| 久久精品美女视频网站| 欧美日韩亚洲91| 欧美日韩国产丝袜美女| 欧洲中文字幕国产精品| 亚洲精品天天看| 爱福利视频一区| www.午夜精品| 国产精品女人网站| 美女久久久久久久| 欧美另类第一页| 亚洲性夜色噜噜噜7777| 中文字幕精品久久久久|