在jquery中,遍歷對象和數(shù)組,經(jīng)常會用到$().each和$.each(),兩個方法。兩個方法是有區(qū)別的,從而這兩個方法在針對不同的操作上,顯示了各自的特點(diǎn)。
$().each,對于這個方法,在dom處理上面用的較多。如果頁面有多個input標(biāo)簽類型為checkbox,對于這時用$().each來處理多個checkbook,例如:
$(“input[name=’ch’]”).each(function(i){if($(this).attr(‘checked’)==true){//一些操作代碼
}
回調(diào)函數(shù)是可以傳遞參數(shù),i就為遍歷的索引。
對于遍歷一個數(shù)組,用$.each()來處理,簡直爽到了極點(diǎn)。例如:
$.each([{“name”:”limeng”,”email”:”xfjylimeng”},{“name”:”hehe”,”email”:”xfjylimeng”},function(i,n){alert(“索引:”+i,”對應(yīng)值為:”+n.name);});
參數(shù)i為遍歷索引值,n為當(dāng)前的遍歷對象.
var arr1 = [ “one”, “two”, “three”, “four”, “five” ];$.each(arr1, function(){alert(this);});輸出:one two three four fivevar arr2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]$.each(arr2, function(i, item){alert(item[0]);});輸出:1 4 7var obj = { one:1, two:2, three:3, four:4, five:5 };$.each(obj, function(key, val) {alert(obj[key]);});輸出:1 2 3 4 5
在jQuery里有一個each方法,用起來非常的爽,不用再像原來那樣寫for循環(huán),jQuery源碼里自己也有很多用到each方法。
其實(shí)jQuery里的each方法是通過js里的call方法來實(shí)現(xiàn)的。
下面簡單介紹一下call方法。call這個方法很奇妙,其實(shí)官方的說明是:“調(diào)用一個對象的一個方法,以另一個對象替換當(dāng)前對象。”網(wǎng)上更多的解釋是變換上下文環(huán)境,也有說是改變上下文this指針。call([thisObj[,arg1[, arg2[, [,.argN]]]]])
參數(shù)thisObj可選項(xiàng)。將被用作當(dāng)前對象的對象。arg1, arg2, , argN可選項(xiàng)。將被傳遞方法參數(shù)序列。
說明call 方法可以用來代替另一個對象調(diào)用一個方法。call 方法可將一個函數(shù)的對象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對象。
引用網(wǎng)上有一個很經(jīng)典的例子
Js代碼function add(a,b){alert(a+b);}function sub(a,b){alert(a-b);}add.call(sub,3,1);
用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以運(yùn)行結(jié)果為:alert(4);注意:js 中的函數(shù)其實(shí)是對象,函數(shù)名是對 Function 對象的引用。
具體call更深入的就不在這里提了。
下面提一下jQuery的each方法的幾種常用的用法
Js代碼var arr = [ “one”, “two”, “three”, “four”];$.each(arr, function(){alert(this);});//上面這個each輸出的結(jié)果分別為:one,two,three,four
var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]$.each(arr1, function(i, item){alert(item[0]);});//其實(shí)arr1為一個二維數(shù)組,item相當(dāng)于取每一個一維數(shù)組,//item[0]相對于取每一個一維數(shù)組里的第一個值//所以上面這個each輸出分別為:1 4 7
var obj = { one:1, two:2, three:3, four:4};$.each(obj, function(key, val) {alert(obj[key]);});//這個each就有更厲害了,能循環(huán)每一個屬性//輸出結(jié)果為:1 2 3 4
新聞熱點(diǎn)
疑難解答