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

首頁 > 語言 > JavaScript > 正文

jQuery.each使用詳解

2024-05-06 16:22:53
字體:
來源:轉載
供稿:網友

這篇文章主要給大家詳細介紹了jQuery.each使用方法及源碼分析的相關資料,需要的朋友可以參考下

jQuery.each方法是jQuery的核心工具方法之一,通用例遍方法,可用于例遍對象和數組。不同于例遍 jQuery 對象的 $().each() 方法,此方法可用于例遍任何對象。通常需要兩個參數

object:需要例遍的對象或數組。

callback:每個成員/元素執行的回調函數。

回調函數擁有兩個參數:第一個為對象的成員或數組的索引,第二個為對應變量或內容。如果需要退出 each 循環可使回調函數返回 false,其它返回值將被忽略。

例遍數組,同時使用元素索引和內容。舉例如下:

 

 
  1. //例遍對象,同時使用成員名稱和變量內容。 
  2.  
  3. $.each( [0,1,2], function(i, n){ 
  4. alert( "Item #" + i + ": " + n ); 
  5. }); 
  6. //例遍對象,同時使用成員名稱和變量內容。 
  7.  
  8. $.each( { name: "John", lang: "JS" }, function(i, n){ 
  9. alert( "Name: " + i + ", Value: " + n ); 
  10. }); 

當然也可以直接使用實例調用

 

 
  1. $( 'div' ).each( function(i,n){ 
  2. return i+n.text; 
  3. } ) 

其實在源碼中實例(原型)方法也是調用的靜態方法,所以分析each方法只需要分析其靜態方法即可,實例調用只不過是靜態方法使用中的一個特例罷了。

 

 
  1. // Execute a callback for every element in the matched set. 
  2. // (You can seed the arguments with an array of args, but this is 
  3. // only used internally.) 
  4. each: function( callback, args ) { 
  5. return jQuery.each( this, callback, args ); 
  6. }, 

在原型方法中直接把this對象當作待遍歷的對象傳入,下面是靜態方法的源碼

 

 
  1. // args is for internal usage only 
  2. each: function( object, callback, args ) { 
  3. var name, i = 0, 
  4. length = object.length, 
  5. isObj = length === undefined || jQuery.isFunction( object ); 
  6. if ( args ) { 
  7. if ( isObj ) { 
  8. for ( name in object ) { 
  9. if ( callback.apply( object[ name ], args ) === false ) { 
  10. break
  11. else { 
  12. for ( ; i < length; ) { 
  13. if ( callback.apply( object[ i++ ], args ) === false ) { 
  14. break
  15.  
  16. // A special, fast, case for the most common use of each 
  17. else { 
  18. if ( isObj ) { 
  19. for ( name in object ) { 
  20. if ( callback.call( object[ name ], name, object[ name ] ) === false ) { 
  21. break
  22. else { 
  23. for ( ; i < length; ) { 
  24. if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { 
  25. break
  26.  
  27. return object; 
  28. }, 

東西也不是很多,首先接受3個參數,這個時候就要注意了在我們經常使用的手冊中一般是寫的兩個參數的我們一般使用也是使用兩個參數,但是其實在源碼中是有3個參數可以接受的,其中第三個參數是一個數組,會作為回調函數的參數傳入。

首先聲明幾個變量,i、name和length是為循環做準備的,isObj是為了區分待便利的參數是數組還是對象,通過判斷該參數如果是函數或者length屬性不存在來判斷是對象,其他的就按數組或者類數組來處理。

isObj = length === undefined || jQuery.isFunction( object );

這一句寫的很精簡利用運算符的優先順序先執行===

其實這樣的判斷并不是很精準只是一個大致的區分,比如:

 

 
  1. var obj={length:'a'}; 
  2. var isObj= obj.length=== undefined || jQuery.isFunction( obj ); 
  3. alert(isObj); //false 

然后就是根據是否添加第三個參數進行區分,先看下沒有添加的情況也就是

 

 
  1. else { 
  2. if ( isObj ) { 
  3. for ( name in object ) { 
  4. if ( callback.call( object[ name ], name, object[ name ] ) === false ) { 
  5. break
  6. else { 
  7. for ( ; i < length; ) { 
  8. if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { 
  9. break

根據isObj變量“區分”數組和對象,對于數組使用for循環,對于對象采用for...in循環,每循環一此就會執行一次回調函數并把當前循環的數組或者對象鍵和值傳進去,這里使用的call方法,第一個參數是函數的“this”也就是把當前循環的值作為this后面兩個是鍵和值或者是指針和值,所以我們使用循環中使用回調函數的第二個參數跟使用this是一樣的。比如:

 

 
  1. //剛才的例子 
  2. $( 'div' ).each( function(i,n){ 
  3. return i+n.text; 
  4. } ) 
  5. //等價于 
  6. $( 'div' ).each( function(i,n){ 
  7. return i+this.text; 
  8. } ) 

對于添加了第三個參數的情況而言就是改變了回調函數的傳值方式,使用的是apply方法來傳遞參數,this指向的依然是當前值只不過把args也就是第三個參數數組傳遞進去,這個數組有多少參數那么回調函數就有多少參數可以用,這里需要注意的是第三個一定是js原聲數組形式不能是類數組或者jQuery對象否則會報錯因為apply方法不支持。如果回調函數返回false那么將跳過循環比如我們可以只處理奇數下標數組是可以判斷是偶數項時在回調函數中執行return false即可

 

 
  1. return object; 

最后返回原對象或者數組等

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩亚洲欧美成人| 国产精品美女在线| 国产专区精品视频| 成人久久精品视频| 欧日韩不卡在线视频| 日日噜噜噜夜夜爽亚洲精品| 亚洲码在线观看| 亚洲国语精品自产拍在线观看| 欧美日韩国产精品一区| 亚洲欧美日本另类| 日本韩国在线不卡| 日韩在线中文视频| 全色精品综合影院| 一区二区三区黄色| 欧美夫妻性生活视频| 日韩精品极品在线观看播放免费视频| 久久成人精品一区二区三区| 中文字幕亚洲色图| 亚洲人成欧美中文字幕| 日韩av观看网址| 亚洲综合中文字幕在线| 成人动漫网站在线观看| 都市激情亚洲色图| 久久91亚洲人成电影网站| 九九视频直播综合网| 久久久久久中文| 日韩成人在线电影网| 久久免费观看视频| 亚洲国产精品一区二区久| 日本精品视频在线| 亚洲午夜精品视频| 亚洲国产日韩精品在线| 日韩免费在线播放| 久久久久久久久久久91| 亚洲最新av在线网站| 国产视频自拍一区| 国产乱肥老妇国产一区二| 91久久久久久| 91视频九色网站| 在线亚洲午夜片av大片| 最近2019中文字幕第三页视频| 国产99视频在线观看| www亚洲欧美| 亚洲无av在线中文字幕| 国产亚洲欧美aaaa| 久久久伊人日本| 亚洲性线免费观看视频成熟| 国产精品视频在线播放| 亚洲精品乱码久久久久久按摩观| 一区二区三区回区在观看免费视频| 免费av在线一区| 国产乱肥老妇国产一区二| 日韩视频免费观看| 国产精品吴梦梦| 亚洲欧洲在线看| 色青青草原桃花久久综合| 夜夜嗨av一区二区三区四区| 少妇久久久久久| 96国产粉嫩美女| 久久久亚洲网站| 欧美在线国产精品| 97国产真实伦对白精彩视频8| 欧美性xxxx极品hd欧美风情| 成人av在线网址| 91影视免费在线观看| 精品国产欧美一区二区五十路| 亚洲在线一区二区| 亚洲成人精品久久| 亚洲天堂av图片| 高潮白浆女日韩av免费看| 欧美精品第一页在线播放| 欧美激情xxxx| 96pao国产成视频永久免费| 永久免费精品影视网站| 亚洲系列中文字幕| 久久精品亚洲94久久精品| 国产午夜精品视频| 日韩精品在线观看一区| 91精品久久久久久久久久| 亚洲第一精品福利| 欧美性xxxxx极品| 国产精品久久久久久久久久东京| 91中文精品字幕在线视频| 国产精品电影网站| 性金发美女69hd大尺寸| 亚洲欧美日韩国产中文| 亚洲色图欧美制服丝袜另类第一页| 日韩av黄色在线观看| 国产成人综合精品在线| 亚洲桃花岛网站| 国产精品日韩精品| 久久久噜久噜久久综合| 久久精品视频在线播放| 国产黑人绿帽在线第一区| 日韩在线视频播放| 亚洲国产91色在线| 久久精品美女视频网站| 国产精品免费视频久久久| 欧美亚洲国产另类| 亚洲大尺度美女在线| 91精品视频免费观看| 精品久久中文字幕久久av| 国产亚洲精品日韩| 欧美日韩国产精品一区二区不卡中文| 国产精品扒开腿做爽爽爽的视频| 欧美一级淫片丝袜脚交| 精品久久香蕉国产线看观看gif| 国产视频精品自拍| 日韩av一区二区在线观看| 91香蕉嫩草影院入口| 日韩精品在线免费播放| 成人国产精品色哟哟| 亚洲精品综合精品自拍| 国自在线精品视频| 欧美激情第一页xxx| 久久影视电视剧免费网站清宫辞电视| 久久亚洲欧美日韩精品专区| 亚洲国产精久久久久久| 国产+人+亚洲| 91精品国产自产在线老师啪| 亚洲成人中文字幕| 中文字幕亚洲综合| 青青草99啪国产免费| 日本精品免费一区二区三区| 2020国产精品视频| 久久久999精品视频| 亚洲国产精久久久久久| 久久视频在线看| 日韩精品在线观看一区| 国产成人精品久久二区二区| 国产中文字幕91| 九九热精品视频| 成人乱色短篇合集| 国产一区二区三区精品久久久| 久久久久日韩精品久久久男男| 国产精品久久一| 色妞色视频一区二区三区四区| 亚洲午夜小视频| 欧美亚洲另类制服自拍| 91系列在线观看| 国产噜噜噜噜噜久久久久久久久| 日韩激情视频在线| 日韩网站在线观看| 久久网福利资源网站| 国产美女直播视频一区| 国产91在线高潮白浆在线观看| 在线看片第一页欧美| 日韩精品极品在线观看播放免费视频| 97超碰色婷婷| 亚洲欧美国产精品久久久久久久| 亚洲最大av在线| 欧美日韩午夜视频在线观看| 久久综合电影一区| 欧美专区日韩视频| 久久久久久久亚洲精品| 日本不卡高字幕在线2019| 亚洲精品成人久久电影| 国产精品人成电影在线观看| 欧美精品激情blacked18| 色哟哟网站入口亚洲精品| 亚洲天堂av在线播放| 国产小视频国产精品| 精品国产精品自拍| 97人人模人人爽人人喊中文字|