jqueryのeach方法の使用例を共有する。

1831 ワード

jQueryオブジェクトについては、単にeachメソッドを簡単に依頼しました。jQueryオブジェクトを最初のパラメータとしてjQueryに渡すeach方法です。言い換えれば、jQueryが提供するeach方法は、パラメータ一が提供するオブジェクトの中のすべてのサブ要素を一つずつメソッドに呼び出します。jQueryオブジェクトが提供するeachメソッドは、jQuery内部のサブ要素を個別に呼び出します。

jQuery.prototype.each=function( fn, args ) {
 return jQuery.each( this, fn, args );
}
jQueryが提供するeach方法の具体的な実現を見てみましょう。jQuery.each(obj,fn,arg)
この方法には三つのパラメータがあります。動作するオブジェクトobj、動作する関数fn、関数のパラメータargs。
ojbオブジェクトに基づいて討論しましょう。
1.objオブジェクトは配列です。
each方法は、配列中性子要素の一つ一つをfn関数で呼び出し、あるサブ要素が戻ってきた結果がfalseと呼ばれるまで、つまり、提供されたfn関数で処理して、一定の条件を満たすと、eachメソッドからの呼び出しを終了します。each法がargパラメータを提供すると、fn関数が着信パラメータをargと呼びます。そうでなければ、サブ要素インデックス、サブ要素自体です。
2.objオブジェクトは配列ではありません。
この方法の1との最大の違いは、fn法が戻り値を考慮せずに順次行われることである。言い換えれば、Objオブジェクトの属性は全てfn方法で呼び出され、たとえfn関数がfalseに戻っても。呼び出しのパラメータは同じです。

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の具体的な呼び出し方法は、簡単なfn(i,val)またはfn(args)ではなく、fn.cal(val,i,val)またはfn.appy(obj.args)の形をとるものであり、これは、あなた自身のfnの実現において、直接にthisポインタ参照配列またはオブジェクトのサブ要素を用いることができることを意味する。この方式は圧倒的に多くのjQueryが採用している一つの実現方式です。