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

首頁 > 編程 > JavaScript > 正文

jQuery.each使用詳解

2019-11-20 12:05:45
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

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

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

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

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

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

// args is for internal usage only  each: function( object, callback, args ) {    var name, i = 0,      length = object.length,      isObj = length === undefined || jQuery.isFunction( object );    if ( args ) {      if ( isObj ) {        for ( name in object ) {          if ( callback.apply( object[ name ], args ) === false ) {            break;          }        }      } else {        for ( ; i < length; ) {          if ( callback.apply( object[ i++ ], args ) === false ) {            break;          }        }      }    // A special, fast, case for the most common use of each    } else {      if ( isObj ) {        for ( name in object ) {          if ( callback.call( object[ name ], name, object[ name ] ) === false ) {            break;          }        }      } else {        for ( ; i < length; ) {          if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {            break;          }        }      }    }    return object;  },

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

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

isObj = length === undefined || jQuery.isFunction( object );
這一句寫的很精簡利用運算符的優先順序先執行===

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

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

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

} else {      if ( isObj ) {        for ( name in object ) {          if ( callback.call( object[ name ], name, object[ name ] ) === false ) {            break;          }        }      } else {        for ( ; i < length; ) {          if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {            break;          }        }      }    }

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

//剛才的例子 $( 'div' ).each( function(i,n){    return i+n.text;  } )//等價于 $( 'div' ).each( function(i,n){    return i+this.text;  } )

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

return object;

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
乱亲女秽乱长久久久| 日本久久中文字幕| 欧洲亚洲在线视频| 日韩免费观看视频| 国产美女搞久久| 国产精品成人aaaaa网站| 国产一区二区在线免费| 中文字幕日韩欧美在线| 欧美一区二区.| 日本免费久久高清视频| 69精品小视频| 国产免费一区二区三区在线能观看| 国产精品久久电影观看| www.欧美三级电影.com| 国产精品视频地址| 日韩视频中文字幕| 一区二区三区回区在观看免费视频| 国模精品视频一区二区| 狠狠干狠狠久久| 日韩av在线免费| 欧美久久精品一级黑人c片| 欧美猛交免费看| 一个人看的www欧美| 欧美性猛交xxxx久久久| 欧美成人精品h版在线观看| 国产女人精品视频| 欧美在线观看网址综合| 奇米影视亚洲狠狠色| 日本免费久久高清视频| 精品久久久久久亚洲精品| 亚洲欧美日韩中文在线| 久久韩剧网电视剧| 国产美女91呻吟求| 久久影视电视剧免费网站| 国产成人福利夜色影视| 亚洲伊人一本大道中文字幕| 午夜精品一区二区三区视频免费看| 日本免费久久高清视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 97视频国产在线| 色婷婷亚洲mv天堂mv在影片| 亚洲欧美在线免费| 国产mv免费观看入口亚洲| 久久男人资源视频| 欧美日韩美女视频| 7777免费精品视频| 最新日韩中文字幕| 亚洲国产精品99| 久久国产精品久久久| 亚洲国产日韩欧美在线图片| 亚洲风情亚aⅴ在线发布| 久久99国产精品久久久久久久久| 日本高清久久天堂| 国产精品日韩在线观看| 九九精品在线观看| 亚洲性猛交xxxxwww| 中文字幕av一区| 欧亚精品中文字幕| 亚洲欧美日韩图片| 亚洲欧美国产一区二区三区| 亚洲aⅴ男人的天堂在线观看| 亚洲人成亚洲人成在线观看| 亚洲国产精品999| 欧美噜噜久久久xxx| 国产精品主播视频| 国产一区av在线| 亚洲精品国产精品国产自| 国产精品视频白浆免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 97超级碰碰人国产在线观看| 亚洲国产精品大全| 国产精品免费在线免费| xxav国产精品美女主播| 亚洲女成人图区| 国产精品吴梦梦| 青草青草久热精品视频在线观看| 中日韩美女免费视频网站在线观看| 在线播放国产一区二区三区| 亚洲视频777| 中文字幕一精品亚洲无线一区| 国产99久久精品一区二区永久免费| 国产精品久久久久久久久久久不卡| 在线视频免费一区二区| 日韩美女免费线视频| 国产精品流白浆视频| 国产成人综合av| 国产91色在线|| 亚洲一区二区国产| 中文字幕日韩av| 亚洲a中文字幕| 国产精品扒开腿做爽爽爽男男| 一区二区三区天堂av| 色www亚洲国产张柏芝| 欧美麻豆久久久久久中文| 亚洲精品美女视频| 亚洲午夜精品久久久久久性色| 国产精品高潮在线| 亚洲福利视频免费观看| 亚洲奶大毛多的老太婆| 午夜剧场成人观在线视频免费观看| 欧美高清无遮挡| 亚洲精品aⅴ中文字幕乱码| 主播福利视频一区| 粗暴蹂躏中文一区二区三区| www国产91| 国产精品www色诱视频| 久久精视频免费在线久久完整在线看| 日韩成人在线视频网站| 国产精品永久免费在线| 成人黄色生活片| 在线观看亚洲视频| 欧美日韩电影在线观看| 国产成人久久久精品一区| 色婷婷av一区二区三区在线观看| 一本大道久久加勒比香蕉| 亚洲自拍偷拍区| 亚洲性线免费观看视频成熟| 国产精品精品一区二区三区午夜版| 欧美裸身视频免费观看| 97在线看福利| 欧美成人全部免费| 亚洲在线观看视频| 欧美性生交xxxxxdddd| 欧美一区在线直播| 欧美日韩国产成人| 欧美疯狂性受xxxxx另类| 亚洲免费成人av电影| 亚洲日韩欧美视频| 亚洲女人天堂av| 久久久国产精品x99av| 欧美成人免费全部| 在线观看91久久久久久| 亚洲视频一区二区| 亚洲精品少妇网址| 亚洲欧洲美洲在线综合| 91久久精品日日躁夜夜躁国产| 久热爱精品视频线路一| 日韩电影在线观看中文字幕| 美日韩精品免费观看视频| 3344国产精品免费看| 欧美在线视频免费| 午夜精品99久久免费| 欧美大人香蕉在线| 国产精品久久久久久网站| 久久天天躁狠狠躁夜夜av| 国产亚洲美女久久| 精品国产精品自拍| 日韩欧美福利视频| 亚洲午夜色婷婷在线| 亚洲aa中文字幕| 51视频国产精品一区二区| 亚洲精品成人久久| 欧美一区深夜视频| 亚洲美女精品成人在线视频| 久久久久久久久久久国产| 欧美高清无遮挡| 欧美成人午夜免费视在线看片| 亚洲视频在线观看免费| 少妇精69xxtheporn| 欧美午夜无遮挡| 狠狠操狠狠色综合网| 国产精品日韩久久久久| 亚洲小视频在线| 亚洲理论在线a中文字幕|