本篇文章為大家介紹一下Jquery中的each方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
推薦教學:jQuery教學
<strong>#jQuery.each( object, callback,arg)</strong>
each()函數是基本上所有的框架都提供了的一個工具類別函數,透過它,你可以遍歷物件、陣列的屬性值並進行處理。
jQuery和jQuery物件都實作了該方法,對於jQuery對象,只是把each方法簡單的進行了委託:把jQuery物件作為第一個參數傳遞給jQuery的each方法。換句話說:jQuery提供的each方法是對參數一提供的物件的中所有的子元素逐一進行方法呼叫。而jQuery物件提供的each方法則是對jQuery內部的子元素進行逐一呼叫。
jQuery.prototype.each = function(fn, args) { return jQuery.each(this, fn, args); }
讓我們看一下jQuery提供的each方法的具體實現,
jQuery.each(obj,fn,arg)
該方法有三個參數:進行操作的物件obj,進行操作的函數fn,函數的參數args。
讓我們根據ojb物件進行討論:
1、obj物件是數組
each方法會對數組中子元素的逐個進行fn函數調用,直至調用某個子元素回傳的結果為false為止,也就是說,我們可以在提供的fn函數進行處理,使之滿足一定條件後就退出each方法呼叫。當each方法提供了arg參數時,fn函數呼叫傳入的參數為arg,否則為:子元素索引,子元素本身
2、obj 物件不是數組
該方法同1的最大差別是:fn方法會被逐次不考慮傳回值的進行進行。換句話說,obj物件的所有屬性都會被fn方法進行調用,即使fn函數傳回false。呼叫傳入的參數同1類似。
jQuery.each = function(obj, fn, args) { if (args) { if (obj.length == undefined) { for (var i in obj) fn.apply(obj, args); } else { for (var i = 0, ol = obj.length; i < ol; i++) { if (fn.apply(obj, args) === false) break; } } } else { if (obj.length == undefined) { for (var i in obj) fn.call(obj, i, obj); } else { for (var i = 0, ol = obj.length, val = obj[0]; i < ol && fn.call(val, i, val) !== false; val = obj[++i]) { } } } return obj; }
需要特別注意的是each方法中fn的具體呼叫方法並不是採用簡單的fn(i,val)或fn(args),而是採用了fn.call(val,i,val )或fn.apply(obj.args)的形式,這意味著,在你自己的fn的實作中,可以直接採用this指標來引用數組或是物件的子元素。這種方式是絕大多數jQuery所採用的一種實作方式。
var arr = ["one", "two", "three", "four", "five"]; var obj = { one: 1, two: 2, three: 3, four: 4, five: 5 }; jQuery.each(arr, function() { alert(this); }); /* one,two,three,four,five */ jQuery.each(obj, function(i, val) { alert(i+":"+val); }); /* one:1 two:2 three:3 four:4 five:5 */ jQuery.each(arr, function(i, val) { alert(i); }); /* 0,1,2,3,4 */ jQuery.each(arr, function(i, val) { alert(arr[i]); }); /* one tow three four five */
更多程式相關知識,請造訪:程式設計教學! !
以上是淺談Jquery中的each方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!