首頁  >  文章  >  web前端  >  淺談Jquery中的each方法

淺談Jquery中的each方法

青灯夜游
青灯夜游轉載
2021-01-02 17:55:423168瀏覽

本篇文章為大家介紹一下Jquery中的each方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

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

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除