最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年01月23日 10:20:25   投稿:shichen2014  
這篇文章主要介紹了jQuery源碼分析之jQuery.fn.each與jQuery.each用法,較為詳細的分析了each的用法,非常具有實用價值,需要的朋友可以參考下

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

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

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

上面用的的.each,即jQuery.fn.each,其內(nèi)部是通過jQuery.each實現(xiàn)的

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

先貼一下類官方API說明,非常簡單,只有兩點需要注意
上文例子里的$(this).addClass('red'),其中,this指的是當前操作的dom元素
each中傳入的方法,可以返回任意值,當返回的值為false時,跳出當前循環(huán)操作
復制代碼 代碼如下:
/**
 
 * @description 對jQuery對象中,匹配的的每個dom元素執(zhí)行一個方法
 
 * @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;  // 跳出循環(huán)
    $(this).addClass('red');
}
});

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

源碼內(nèi)部是通過jQuery.each實現(xiàn)的,下面就講下jQuery.each的源碼,講完jQuery.each的源碼,jQuery.fn.each的源碼就很簡單了
 
jQuery.each:

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

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

輸出內(nèi)容如下:

0: 52-52
1
1: 97-97

類官方API說明

同樣是有兩個注意點

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

復制代碼 代碼如下:
/**
 
 * @description 對集合(數(shù)組或?qū)ο螅┲械拿總€元素,執(zhí)行某個操作
 
 * @param {Number|String} indexInArray 元素在集合中對應的位置(如集合為數(shù)組,則為數(shù)字;如集合為對象,則為鍵值)
 
 * @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 );
}
});

例子二

從官網(wǎng)直接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是不是類似數(shù)組的對象,比如 {'0':'hello', '1':'world', 'length':2},其實就是為jQuery對象服務啦
 
    if ( args ) {   // args,其實沒發(fā)現(xiàn)這個參數(shù)有什么實際作用~~直接跳過看else里面的內(nèi)容即可,除了callback傳的參數(shù)不同外無其他區(qū)別
        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 ) {    // 處理數(shù)組
            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的時候,直接跳出循環(huán)了
                    break;
                }
            }
        }
    }
    return obj;
}
},

 
 
遲到的jQuery.fn.each源碼:

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

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

 
結(jié)束語

與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程序設計有所幫助。

相關文章

  • 如何使用CSS3和JQuery easing 插件制作絢麗菜單

    如何使用CSS3和JQuery easing 插件制作絢麗菜單

    這篇文章主要介紹了如何使用CSS3和JQuery easing 插件制作絢麗菜單,這樣做可以讓有菜單的盒子滑出,并且彈出縮略圖。在某些菜單項中我們還包含著有進一步鏈接的子菜單。取決于我們鼠標在菜單項上的停懸,子菜單將向左或向右滑動。,需要的朋友可以參考下
    2019-06-06
  • jQuery實現(xiàn)的移動端圖片縮放功能組件示例

    jQuery實現(xiàn)的移動端圖片縮放功能組件示例

    這篇文章主要介紹了jQuery實現(xiàn)的移動端圖片縮放功能組件,結(jié)合實例形式詳細分析了jQuery基于移動端的圖片縮放功能組件實現(xiàn)原理、步驟、核心代碼及使用技巧,需要的朋友可以參考下
    2020-05-05
  • JQuery頁面隨滾動條動態(tài)加載效果的簡單實現(xiàn)(推薦)

    JQuery頁面隨滾動條動態(tài)加載效果的簡單實現(xiàn)(推薦)

    下面小編就為大家?guī)硪黄狫Query頁面隨滾動條動態(tài)加載效果的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • js/jquery判斷瀏覽器類型的方法小結(jié)

    js/jquery判斷瀏覽器類型的方法小結(jié)

    有些時候需要根據(jù)瀏覽器來寫樣式,所以要判斷一下瀏覽器類型,百度了一下,才知道JQuery有個方法直接判斷,并附上原生的js的判斷方法,分享給大家,有需要的小伙伴可以參考下。
    2015-05-05
  • 基于jQuery插件jqzoom實現(xiàn)的圖片放大鏡效果示例

    基于jQuery插件jqzoom實現(xiàn)的圖片放大鏡效果示例

    這篇文章主要介紹了基于jQuery插件jqzoom實現(xiàn)的圖片放大鏡效果,結(jié)合實例形式分析了jQuery插件jqzoom的使用方法與相關注意事項,需要的朋友可以參考下
    2017-01-01
  • 分享33個jQuery與CSS3實現(xiàn)的絢麗鼠標懸停效果

    分享33個jQuery與CSS3實現(xiàn)的絢麗鼠標懸停效果

    今天整理了33個使用jQuery與CSS3實現(xiàn)絢麗的鼠標懸停效果,有些是純CSS3的,這些效果你完全可以用在你的網(wǎng)頁上,讓網(wǎng)站獲得更好的體驗
    2014-12-12
  • jQuery實現(xiàn)360°全景拖動展示

    jQuery實現(xiàn)360°全景拖動展示

    360全景就是視角超過人的正常視角的圖像,而我們這里說的全景特指水平視角360度,垂直視角180度的圖像。可以全景空間里進行切換,達到瀏覽各個不同場景360全景展示的目的。
    2015-03-03
  • Jquery Easyui分割按鈕組件SplitButton使用詳解(17)

    Jquery Easyui分割按鈕組件SplitButton使用詳解(17)

    這篇文章主要為大家詳細介紹了Jquery Easyui分割按鈕組件SplitButton的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 修改好的jquery滾動字幕效果實現(xiàn)代碼

    修改好的jquery滾動字幕效果實現(xiàn)代碼

    修改好的jquery滾動字幕效果,需要的朋友可以參考下。
    2011-06-06
  • jQuery基于ajax實現(xiàn)星星評論代碼

    jQuery基于ajax實現(xiàn)星星評論代碼

    這篇文章主要介紹了jQuery基于ajax實現(xiàn)星星評論代碼,可實現(xiàn)實時顯示評論效果的功能,基于Ajax實現(xiàn),非常具有實用價值,需要的朋友可以參考下
    2015-08-08

最新評論

花莲县| 南陵县| 龙井市| 灵石县| 来安县| 三河市| 三台县| 辉县市| 天门市| 博兴县| 图木舒克市| 安仁县| 新密市| 正蓝旗| 江安县| 泊头市| 宣恩县| 志丹县| 临泉县| 宁化县| 朔州市| 中牟县| 兴山县| 茌平县| 沐川县| 绥芬河市| 大洼县| 灵宝市| 化德县| 新建县| 易门县| 剑阁县| 宁明县| 明星| 交城县| 武义县| 任丘市| 九龙县| 鞍山市| 南皮县| 合阳县|