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

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 12:34:59
字體:
來源:轉載
供稿:網友

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

each()方法能使DOM循環結構簡潔,不容易出錯。each()函數封裝了十分強大的遍歷功能,使用也很方便,它可以遍歷一維數組、多維數組、DOM, JSON 等等
在javaScript開發過程中使用$each可以大大的減輕我們的工作量。

下面提一下each的幾種常用的用法

each處理一維數組

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

alert(i)將輸出0,1,2
alert(val)將輸出aaa,bbb,ccc

each處理二維數組

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

arr2為一個二維數組,item相當于取這二維數組中的每一個數組。
item[0]相對于取每一個一維數組里的第一個值
alert(i)將輸出為0,1,2,因為這二維數組含有3個數組元素
alert(item)將輸出為 ['a', 'aa', 'aaa'],['b', 'bb', 'bbb'],['c', 'cc', 'ccc']

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

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

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就有更厲害了,能循環每一個屬性

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

這里alert(key)將輸出one two three
alert(val)將輸出one,1,two,2,three,3
這邊為何key不是數字而是屬性呢,因為json格式內是一組無序的屬性-值,既然無序,又何來數字呢。
而這個val等同于obj[key]

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

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

<input name="aaa" type="hidden" value="111" /><input name="bbb" type="hidden" value="222" /><input name="ccc" type="hidden" value="333" /><input name="ddd" type="hidden" value="444"/>

然后你使用each如下

$.each($("input:hidden"), function(i,val){ alert(val);alert(i);alert(val.name);alert(val.value); });

那么,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將輸出同樣的結果

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

$("input:hidden").each(function(i,val){alert(i);alert(val.name);alert(val.value); });

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

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

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

看下jQuery中的each實現(網絡摘抄)

function (object, callback, args) {//該方法有三個參數:進行操作的對象obj,進行操作的函數fn,函數的參數argsvar name, i = 0,length = object.length;if (args) {if (length == undefined) {for (name in object) {if (callback.apply(object[name], args) === false) {break;}}} else {for (; i < length;) {if (callback.apply(object[i++], args) === false) {break;}}}} else {if (length == undefined) {for (name in object) {if (callback.call(object[name], name, object[name]) === false) {break;}}} else {for (var value = object[0]; i < length && callback.call(value, i, value) !== false; value = object[++i]) {}/*object[0]取得jQuery對象中的第一個DOM元素,通過for循環,得到遍歷整個jQuery對象中對應的每個DOM元素,通過 callback.call( value,i,value);將callback的this對象指向value對象,并且傳遞兩個參數,i表示索引值,value表示DOM元素;其中callback是類似于 function(index, elem) { ... } 的方法。所以就得到 $("...").each(function(index, elem){ ... });*/}}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
黄色成人在线播放| 美女黄色丝袜一区| 欧美亚洲免费电影| 九九精品在线播放| 日韩在线观看高清| 国产精品成久久久久三级| 久久精品99国产精品酒店日本| 亚洲电影免费在线观看| 日韩欧美在线视频日韩欧美在线视频| 精品久久久久久久久久国产| 精品一区二区三区四区在线| 国内自拍欧美激情| 国模叶桐国产精品一区| 97精品免费视频| 国产亚洲a∨片在线观看| 欧美肥臀大乳一区二区免费视频| 欧美激情videoshd| 全球成人中文在线| 欧美性猛交xxxxx免费看| 欧美在线激情视频| 俺去了亚洲欧美日韩| 丝袜美腿精品国产二区| 久久久国产精彩视频美女艺术照福利| 一本色道久久88综合亚洲精品ⅰ| 国产精品美女久久| 国产成人精品一区二区在线| 91视频免费网站| 91久久精品美女高潮| 久久免费国产精品1| 777精品视频| 久久97精品久久久久久久不卡| 亚洲综合自拍一区| 日韩欧美极品在线观看| 欧美午夜激情小视频| 精品福利在线视频| 国产欧美va欧美va香蕉在| 亚洲成人久久网| 精品国产福利视频| www.亚洲男人天堂| 欧美大片在线影院| 久久91亚洲精品中文字幕| 欧美激情中文字幕在线| 美女视频黄免费的亚洲男人天堂| 国产精品高潮在线| 国产女人18毛片水18精品| 欧美电影免费观看高清| 久久久999精品视频| 国产精品你懂得| 亚洲国产第一页| 国产91精品黑色丝袜高跟鞋| 亚洲片av在线| 欧美一级电影免费在线观看| 日韩av在线免费观看| 91麻豆国产精品| 国产精品久久久久久影视| 成人黄色中文字幕| 国产一级揄自揄精品视频| 久久久久久久一区二区| 国产视频精品一区二区三区| 欧美第一页在线| 国产精品嫩草影院久久久| 日韩av免费在线看| 亚洲男人av在线| 亚洲第一男人av| 久久99国产精品自在自在app| 国产在线观看91精品一区| 欧美黑人巨大精品一区二区| 最近2019年手机中文字幕| 亚洲免费电影在线观看| 久久免费国产视频| 美女久久久久久久| 欧美xxxx综合视频| 2018国产精品视频| 影音先锋欧美精品| 亚洲国产高清高潮精品美女| 日韩免费高清在线观看| 欧美激情伊人电影| 成人欧美一区二区三区黑人| 久久久女女女女999久久| 久久亚洲精品网站| 性金发美女69hd大尺寸| 91在线网站视频| 欧美激情精品久久久久久久变态| 欧美电影在线观看高清| 欧美一级大片在线免费观看| 亚洲欧美日韩一区在线| 久久视频免费在线播放| 国产精品自产拍在线观| 久久99精品久久久久久琪琪| 亚洲国产成人精品一区二区| 日韩精品视频免费在线观看| 国产精品亚洲美女av网站| 欧美日韩免费区域视频在线观看| 国语自产精品视频在线看抢先版图片| 成人午夜小视频| 成人黄色免费在线观看| 九九热视频这里只有精品| 欧美日韩国产专区| 欧美疯狂做受xxxx高潮| 亚洲2020天天堂在线观看| 亚洲欧洲国产精品| 欧美黄色片免费观看| 欧美福利视频在线观看| 韩国精品美女www爽爽爽视频| 亚洲91精品在线观看| 国外成人在线视频| 欧美大片在线看| 精品国内自产拍在线观看| 国内精品久久久| 中日韩美女免费视频网站在线观看| 亚洲日本中文字幕| 97香蕉久久超级碰碰高清版| 亚洲女人被黑人巨大进入| 伊人伊成久久人综合网小说| 久久99精品久久久久久琪琪| 欧美极品美女视频网站在线观看免费| 一区二区三欧美| 日韩欧美在线中文字幕| 7m第一福利500精品视频| 91免费的视频在线播放| 伊人成人开心激情综合网| 国产精品白嫩初高中害羞小美女| 国产999视频| 精品久久久久久久久久| 日韩中文字幕亚洲| 欧美激情免费观看| 精品久久久精品| 日韩在线不卡视频| 成人激情免费在线| 俺也去精品视频在线观看| 色先锋资源久久综合5566| 国产精品吹潮在线观看| 2020欧美日韩在线视频| 国产精品第三页| 日韩视频永久免费观看| 亚洲欧美国产日韩天堂区| 国内精品免费午夜毛片| 亚洲欧美另类中文字幕| 精品欧美aⅴ在线网站| 2019亚洲日韩新视频| 亚洲性生活视频在线观看| 久久精品福利视频| 亚洲伊人一本大道中文字幕| 国产精品福利无圣光在线一区| 欧美午夜片在线免费观看| 精品久久久久久中文字幕大豆网| 黑丝美女久久久| 日韩在线观看你懂的| 裸体女人亚洲精品一区| 亚洲国产成人精品久久久国产成人一区| 欧美激情视频一区二区| 亚洲永久在线观看| 久久精品在线视频| 欧美日本啪啪无遮挡网站| 91精品国产99久久久久久| 欧美成人中文字幕在线| 一夜七次郎国产精品亚洲| 国产精选久久久久久| 亚洲国产精品福利| 一道本无吗dⅴd在线播放一区| 欧美午夜精品在线| 日韩一区二区福利| 亚洲成人久久久久| 91精品视频观看|