SQLの窓

2012年02月03日


jQuery の each メソッドの『秘密の使い方』

本家のドキュメントにその記述が無かったんですが、ソースを読むと明らかに二通り
の使い方がありました。一つは、ドキュメントの通りに 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の最新記事】
posted by lightbox at 2012-02-03 15:18 | メソッド:jQuery | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり