本家のドキュメントにその記述が無かったんですが、ソースを読むと明らかに二通り の使い方がありました。一つは、ドキュメントの通りに each の引数はコールバック のみを渡して、第一引数はインデックス番号で、第二引数は this と同じものが使え るというものです。 しかし、もうひとつでは each の引数にはコールバックともうひとつ配列を渡せるよ うになっていて、その場合はそれぞれのコールバックの引数には配列の値が一つ一つ 渡されるというものです
<a href="#" target="_blank">001</a> <a class="test" href="http://winofsql.jp" target="_blank">001</a> <a class="test" href="http://toolbox.winofsql.jp" target="_blank">002</a> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.7.1"); </script> <script type="text/javascript"> // ドキュメントに無い使い方 $(".test").each(function(i,me){ console.log(i+" "+me.href+" "+this.href); },['これは',{href:"秘密の使い方"}]); // 普通の使い方 $(".test").each(function(i,me){ console.log(i+" "+me.href+" "+this.href); }); </script>
以下はその該当部分( jquery-1.7.1.js ) ※ callback.apply で呼び出しています
// 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; },
この中では、each に渡されるオブジェクトが length の無い通常オブジェクト も想定されているのですが、$( {} ) では動作しませんでした。もし、その場合 で動くのであれば、インデックスのかわりにプロパティ名が渡る事になっていま す。 ( ※ 動作しなかったと言うのは、配列扱いされてしまっていたという事です )
タグ:jquery
|
【メソッド:jQueryの最新記事】
- jQuery の nextAll と prevAll で、テーブル行の任意のセルをクリックしてその行の全ての TD 内のデータを取得する
- jQuery で要素の作成や移動を行う、append、prepend、after、before で TABLE 要素内の行を扱うサンプル
- jQuery の .contents と .children の違い
- jQuery の .children で、直近の子要素のみを選択して処理する
- jQuery の .filter と .end で同じ集合に対して何度も色々な設定を行う
- jQuery で全て動的に PRE(親)要素の中にアンカー(リンク)を作成して行く処理 : $("<a></a>")
- jQuery の trigger メソッドは、一括で既存の jQuery イベントを呼び出し、その時追加のパラメータを渡す事ができます
- JavaScript と jQuery : 位置関係から id の無い要素の参照を取得
- JavaScript DOMとjQuery : 同一階層(または下の階層)の要素を親経由で参照する
- jQuery の .val() と .val('値') と一括変更用の .val(関数)
- $.extend メソッドで jQuery の中に処理を書いて、その中で使ったデータをグローバルで使えるようにする
- jQuery のイベント名によるイベント登録の中身
- jQuery の .text('値') と .html() で HTMLエンティティに変換
- jQuery : animation メソッド