亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jQuery源碼分析之jQuery.fn.each與jQuery.each用法

2019-11-20 13:19:56
字體:
來源:轉載
供稿:網友

本文實例講述了jQuery源碼分析之jQuery.fn.each與jQuery.each用法。分享給大家供大家參考。具體分析如下:

先上例子,下面代碼的作用是:對每個選中的div元素,都給它們添加一個red類

復制代碼 代碼如下:
$('div').each(function(index, elem){
 
    $(this).addClass('red');
}
});

上面用的的.each,即jQuery.fn.each,其內部是通過jQuery.each實現的

復制代碼 代碼如下:
jQuery.fn.each

先貼一下類官方API說明,非常簡單,只有兩點需要注意
上文例子里的$(this).addClass('red'),其中,this指的是當前操作的dom元素
each中傳入的方法,可以返回任意值,當返回的值為false時,跳出當前循環操作
復制代碼 代碼如下:
/**
 
 * @description 對jQuery對象中,匹配的的每個dom元素執行一個方法
 
 * @param {Number} index 當前處理元素在集合中的位置
 
 * @param {DOMElement} Element 當前處理的dom元素
 
*/
.
.each( function(index, Element) )

下面舉兩個簡單的例子

例子一:

給頁面所有的div元素添加red類

復制代碼 代碼如下:
$('div').each(function(index, elem){
 
    $(this).addClass('red');
}
});

例子二

給頁面前5個div元素添加red類

復制代碼 代碼如下:
$('div').each(function(index, elem){
 
    if(index>=5) return false;  // 跳出循環
    $(this).addClass('red');
}
});

如上,用法挺簡單,不贅述,詳細可查看 http://api.jquery.com/each/

源碼內部是通過jQuery.each實現的,下面就講下jQuery.each的源碼,講完jQuery.each的源碼,jQuery.fn.each的源碼就很簡單了
 
jQuery.each:

同樣是先上一個簡單的例子

復制代碼 代碼如下:
$.each([52, 97], function(index, value) {
  alert(index + ': ' + value + ':' + this);
}
});

輸出內容如下:

0: 52-52
1
1: 97-97

類官方API說明

同樣是有兩個注意點

上面例子中的this,是集合中的元素,即下面的 valueOfElement
在callback中返回false,可以跳出循環

復制代碼 代碼如下:
/**
 
 * @description 對集合(數組或對象)中的每個元素,執行某個操作
 
 * @param {Number|String} indexInArray 元素在集合中對應的位置(如集合為數組,則為數字;如集合為對象,則為鍵值)
 
 * @param {AnyValue} valueOfElement 集合中的元素
 
*/
j
jQuery.each( collection, callback(indexInArray, valueOfElement) )

 
例子一
復制代碼 代碼如下:
$.each( ['one,'two','three', 'four'], function(index, value){
 
    if(index >= 2) return false;
 
    alert( "Index:" + index + ", value: " + value );
}
});

例子二

從官網直接copy來的例子,湊合著看

復制代碼 代碼如下:
$.each( { name: "John", lang: "JS" }, function(k, v){
 
    alert( "Key: " + k + ", Value: " + v );
}
});

源碼:
復制代碼 代碼如下:
// args is for internal usage only
e
each: function( obj, callback, args ) {
 
    var value,
 
        i = 0,
 
        length = obj.length,
 
        isArray = isArraylike( obj );   // obj是不是類似數組的對象,比如 {'0':'hello', '1':'world', 'length':2},其實就是為jQuery對象服務啦
 
    if ( args ) {   // args,其實沒發現這個參數有什么實際作用~~直接跳過看else里面的內容即可,除了callback傳的參數不同外無其他區別
        if ( isArray ) {
            for ( ; i < length; i++ ) {
                value = callback.apply( obj[ i ], args );
                if ( value === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                value = callback.apply( obj[ i ], args );
                if ( value === false ) {
                    break;
                }
            }
        }
    // A special, fast, case for the most common use of each
    } else {
        if ( isArray ) {    // 處理數組
            for ( ; i < length; i++ ) {
                value = callback.call( obj[ i ], i, obj[ i ] );
                if ( value === false ) {
                    break;
                }
            }
        } else {    // 處理對象
            for ( i in obj ) {
                value = callback.call( obj[ i ], i, obj[ i ] ); // value 為callback的返回值
                if ( value === false ) {    // 注意這里,當value===false的時候,直接跳出循環了
                    break;
                }
            }
        }
    }
    return obj;
}
},

 
 
遲到的jQuery.fn.each源碼:

的確很簡單,只要理解了jQuery.each應該就沒問題了,沒什么好講的~

復制代碼 代碼如下:
each: function( callback, args ) {
 
    return jQuery.each( this, callback, args );
}
},

 
結束語

與jQuery.extend、jQuery.fn.extend一樣,雖然 jQuery.each、jQuery.fn.each代碼很簡單,但也扮演了相當重要的作用,jQuery里大量用到了這兩個方法,舉例:

復制代碼 代碼如下:
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
 
    class2type[ "[object " + name + "]" ] = name.toLowerCase();
}
});

所以,好好掌握each!

希望本文所述對大家的jQuery程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天堂网| 精品一区二区电影| 久久精品视频中文字幕| 欧美一级视频一区二区| 欧美久久精品一级黑人c片| 日韩在线视频二区| 黑人巨大精品欧美一区免费视频| 成人h片在线播放免费网站| 国产成人精品在线| 亚洲国产第一页| 在线电影欧美日韩一区二区私密| 日韩av在线影院| 最新国产精品拍自在线播放| 日韩精品中文字| 国产亚洲欧洲高清一区| 亚洲r级在线观看| 亚洲精品99久久久久| 91精品久久久久久久久久| 中文字幕欧美专区| 这里只有精品久久| 日韩欧美在线第一页| 亚洲成人精品视频在线观看| 欧美老少配视频| 国产在线拍揄自揄视频不卡99| 亚洲一区二区三区久久| 中文精品99久久国产香蕉| 国产精品美腿一区在线看| 中文字幕亚洲字幕| 欧美国产日韩一区二区在线观看| 亚洲在线免费视频| 日韩国产精品一区| 中文字幕av一区中文字幕天堂| 成人做爰www免费看视频网站| 91精品国产综合久久香蕉922| 国产不卡一区二区在线播放| 热re99久久精品国产66热| 国产手机视频精品| 国产精品高潮呻吟视频| 国产欧美精品在线播放| 4388成人网| 亚洲欧美成人网| 精品亚洲va在线va天堂资源站| 91最新国产视频| 国产日韩亚洲欧美| 91精品国产高清自在线看超| 精品国产福利在线| 亚洲欧洲第一视频| 91精品视频网站| 成年无码av片在线| 色青青草原桃花久久综合| 国产欧美va欧美va香蕉在线| 久精品免费视频| 国产日韩av在线| 欧美高清videos高潮hd| 精品中文字幕视频| 亚洲成人在线视频播放| 欧美精品免费在线观看| 亚洲free性xxxx护士白浆| 国产精品丝袜白浆摸在线| 91亚洲永久免费精品| 亚洲国产97在线精品一区| 日韩大陆欧美高清视频区| 成人免费观看49www在线观看| 青青久久av北条麻妃海外网| 日韩精品福利网站| 欧美性精品220| 欧美激情一区二区三区久久久| 中文字幕亚洲色图| 欧美国产极速在线| 国内精品美女av在线播放| 国精产品一区一区三区有限在线| 国产精品久久久久久av| 国产精品免费在线免费| 亚洲女同精品视频| 一本色道久久综合亚洲精品小说| 亚洲福利视频二区| 亚洲国产中文字幕久久网| 久久久久久九九九| 搡老女人一区二区三区视频tv| 97精品一区二区三区| 国内免费精品永久在线视频| 97国产精品视频人人做人人爱| 日韩一二三在线视频播| 欧美日本中文字幕| 亚洲一区国产精品| 国产一区深夜福利| 91高清视频免费| 国产精品免费网站| 97国产在线视频| 高清欧美电影在线| 欧美激情视频一区二区三区不卡| 久久国产精品久久久| 欧美尤物巨大精品爽| 一区二区国产精品视频| 国产女精品视频网站免费| 亚洲一区二区中文| 久久精品男人天堂| 色青青草原桃花久久综合| 亚洲视频在线免费观看| 国产精品日韩一区| 国产欧美精品在线播放| 久久免费国产精品1| 国产精品视频午夜| 国产精品久久久久影院日本| 成人免费看黄网站| 91精品久久久久久综合乱菊| 亚洲国产精品成人一区二区| 91av视频在线免费观看| 久久91亚洲精品中文字幕奶水| 深夜福利国产精品| 欧美日韩国产成人高清视频| 国产一区二区三区直播精品电影| 91精品久久久久久久久久久| 欧美成人在线免费| 欧美日韩一区二区三区| 热99精品里视频精品| 国产精品爽爽ⅴa在线观看| 岛国av一区二区| 亚洲欧洲一区二区三区在线观看| 日韩有码在线电影| 91精品国产高清久久久久久91| 亚洲精品视频网上网址在线观看| 国产有码一区二区| 日韩精品免费一线在线观看| 亚洲成人亚洲激情| 免费不卡欧美自拍视频| 欧美人在线视频| 欧美丝袜第一区| 亚洲一二在线观看| 高清在线视频日韩欧美| 亚洲女成人图区| 久久精品91久久香蕉加勒比| 国产精品天天狠天天看| 在线a欧美视频| 成人福利在线观看| 欧美中文在线观看国产| 久热精品视频在线观看| 国产精品久久久久久久久久三级| 青青草国产精品一区二区| 欧美另类在线观看| 96sao精品视频在线观看| 国产精品美女www爽爽爽视频| 2019中文字幕在线免费观看| 国产激情综合五月久久| 亚洲va久久久噜噜噜久久天堂| 欧美色视频日本版| 国产免费一区视频观看免费| 国产激情综合五月久久| 91精品美女在线| 色多多国产成人永久免费网站| 成人免费视频a| 国产美女主播一区| 久久久久国产视频| 欧美成人午夜视频| 日韩欧美国产高清91| 国产精品v片在线观看不卡| 最新国产精品亚洲| 97超级碰在线看视频免费在线看| 亚洲成人精品av| 国产精品18久久久久久首页狼| 欧美视频裸体精品| 尤物yw午夜国产精品视频明星| 日韩av日韩在线观看| 亚洲一区亚洲二区亚洲三区|