在jquery中,遍歷物件和陣列,常常會用到$().each和$.each(),兩個方法。
$().each 在dom處理上面用的較多。如果頁面有多個input標籤類型為checkbox,對於這時用$().each來處理多個checkbook,例如:
<br>##
<span style="font-family: 宋体;">$(“input[name=’ch’]”).each(<span style="color: #0000ff;">function</span><span style="color: #000000;">(i){</span><span style="color: #0000ff;">if</span>($(<span style="color: #0000ff;">this</span>).attr(‘checked’)==<span style="color: #0000ff;">true</span><span style="color: #000000;">) {</span><span style="color: #008000;">//</span><span style="color: #008000;">一些操作代码</span><span style="color: #000000;">}<br><a href="http://www.php.cn/code/8530.html" target="_blank">回调函数</a>是可以传递参数,i就为遍历的索引。<br></span></span>
遍歷一個陣列通常用$.each()來處理 例如:
<br>
<br>
{<br>alert( "索引:"+i+"對應值為:"+n.name);<br>});<br>
參數i為遍歷索引值,n為目前的遍歷物件.
<br>var arr1 = [ "one", "two", "three", "four", "five" ];<br>$.each(arr1, function(){<br>alert(this);<br>});<br>输出:one two three four five<br><br>var arr2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]<br>$.each(arr2, function(i, item){<br>alert(item[0]);<br>});<br>输出:1 4 7<br><br>var obj = { one:1, two:2, three:3, four:4, five:5 };<br>$.each(obj, function(key, val) {<br>alert(obj[key]);<br>});<br>输出:1 2 3 4 5<br>
其實jQuery裡的each方法是透過js裡的call方法來實現的。
下面簡單介紹call方法。 <br>call這個方法很奇妙,其實官方的說明是:「呼叫一個物件的一個方法,以另一個物件取代目前物件。」網路上更多的解釋是變換上下文環境,也有說是改變上下文this指針。 <br>call([thisObj[,arg1[, arg2[, [,.argN]]]]])
參數 <br>thisObj<br>可選項。將被用作當前對象的對象。 <br>arg1, arg2, , argN<br>#可選項。將會被傳遞方法參數序列。
說明<br>call 方法可以用來取代另一個物件呼叫一個方法。 call 方法可將一個函數的物件上下文從初始的上下文變更為由 thisObj 指定的新物件。
引用網路上有一個很經典的範例
Js程式碼
<br>
function add(a,b){
alert(a+b);}<br>function sub(a,b){
alert(a-b);}<br>add.call(sub,3,1);
用add 來取代sub,add.call(sub,3,1) == add(3,1) ,所以運行結果為:alert(4);<br>#注意:js 中的函數其實是對象,函數名稱是對Function 物件的參考。
#下面提一下jQuery的each方法的幾種常用的用法
Js程式碼<br>var arr = [ “one”, “two”, “three”, “four”];<br>$.each( arr, function(){<br>alert(this);<br>#});<br>//上面這個each輸出的結果分別為:one,two,three,four
var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]<br>$.each(arr1, function(i, item){<br>alert(item[0]);<br>});<br>//其实arr1为一个二维数组,item相当于取每一个一维数组,<br>//item[0]相对于取每一个一维数组里的第一个值<br>//所以上面这个each输出分别为:1 4 7
var obj = { one:1, two:2, three:3, four:4};<br>$.each(obj, function(key, val) {<br>alert(obj[key]);<br>});<br>//这个each就有更厉害了,能循环每一个属性<br>//输出结果为:1 2 3 4
jQuery each源码
<br>
each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }
以上是遍歷:jquery $().each和$.each()的詳細內容。更多資訊請關注PHP中文網其他相關文章!