欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jquery的each方法使用示例分享

 更新時間:2014年03月25日 15:36:46   作者:  
each()函數(shù)是基本上所有的框架都提供了的一個工具類函數(shù),通過它,你可以遍歷對象、數(shù)組的屬性值并進行處理,jQuery和jQuery對象都實現(xiàn)了該方法,下面是使用方法

對于jQuery對象,只是把each方法簡單的進行了委托:把jQuery對象作為第一個參數(shù)傳遞給jQuery的each方法.換句話說:jQuery提供的each方法是對參數(shù)一提供的對象的中所有的子元素逐一進行方法調(diào)用。而jQuery對象提供的each方法則是對jQuery內(nèi)部的子元素進行逐個調(diào)用。

復(fù)制代碼 代碼如下:

jQuery.prototype.each=function( fn, args ) {
 return jQuery.each( this, fn, args );
}

讓我們看一下jQuery提供的each方法的具體實現(xiàn),jQuery.each(obj,fn,arg)

該方法有三個參數(shù):進行操作的對象obj,進行操作的函數(shù)fn,函數(shù)的參數(shù)args。

讓我們根據(jù)ojb對象進行討論:

1. obj對象是數(shù)組

each方法會對數(shù)組中子元素的逐個進行fn函數(shù)調(diào)用,直至調(diào)用某個子元素返回的結(jié)果為false為止,也就是說,我們可以在提供的fn函數(shù)進行處理,使之滿足一定條件后就退出each方法調(diào)用。當each方法提供了arg參數(shù)時,fn函數(shù)調(diào)用傳入的參數(shù)為arg,否則為:子元素索引,子元素本身。

2. obj 對象不是數(shù)組

該方法同1的最大區(qū)別是:fn方法會被逐次不考慮返回值的進行進行。換句話說,obj對象的所有屬性都會被fn方法進行調(diào)用,即使fn函數(shù)返回false。調(diào)用傳入的參數(shù)同1類似。

復(fù)制代碼 代碼如下:

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的具體調(diào)用方法并不是采用簡單的fn(i,val)或fn(args),而是采用了fn.call(val,i,val)或fn.apply(obj.args)的形式,這意味著,在你自己的fn的實現(xiàn)中,可以直接采用this指針引用數(shù)組或是對象的子元素。這種方式是絕大多數(shù)jQuery所采用的一種實現(xiàn)方式。

相關(guān)文章

最新評論