首頁  >  文章  >  web前端  >  遍歷:jquery $().each和$.each()

遍歷:jquery $().each和$.each()

巴扎黑
巴扎黑原創
2017-07-09 11:08:061036瀏覽

在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>
$.each([{name:"limeng",email:"xfjylimeng"},{name:"hehe",email:"xfjylimeng"}],function(i,n)

{<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn