|
||||
|
||||
pushStack(elements)
version 1.0 以降
解説指定された要素集合と、元のjQueryオブジェクトへの参照を持つ、新しい jQuery オブジェクトを生成します。
主に開発者向けです。 引数の形が2種類あります。 type1
引数
戻り値
type2
引数
戻り値
例
例1:item2-1, item3-2 を持つjQueryオブジェクトを生成し、背景色を橙色にします。 $("#item1-1") .pushStack([ // item2-1, item3-2 を持つjQueryオブジェクトを生成 document.getElementById("item2-1"), document.getElementById("item3-2")]) .css("background-color", "orange") .end() .css("background-color", "yellow")
内部実装解説jquery-1.4.2.js (Uncompressed) line215-239から抜粋し、コメントを付加
pushStack: function( elems, name, selector ) { // (1) --- 新しい jQuery オブジェクトの生成 --- // DOM 要素を持つ新しい jQuery オブジェクトを生成します。 var ret = jQuery(); if ( jQuery.isArray( elems ) ) { push.apply( ret, elems ); } else { jQuery.merge( ret, elems ); } // (2) --- 元の jQuery オブジェクトの参照を保存 (prevObject プロパティ) --- // 元の jQuery オブジェクト(this)を、生成した jQuery オブジェクトの // prevObject プロパティに保存します。 // これは、end() メソッドで、1つ前の要素集合に戻るときに使用されます。 ret.prevObject = this; // (3) --- context の設定 (context プロパティ) --- // 生成した jQuery オブジェクトの context プロパティに、 // 元の jQuery オブジェクト(this) の context プロパティ を生成します。 ret.context = this.context; // (4) --- selector の設定 (selector プロパティ) --- // selector プロパティを設定します。 // この要素集合の生成に使用した セレクタを保存するためです。 // そのため、第3引数は適切な形でシリアライズされている必要があります。 if ( name === "find" ) { ret.selector = this.selector + (this.selector ? " " : "") + selector; } else if ( name ) { ret.selector = this.selector + "." + name + "(" + selector + ")"; } // (5) --- 新しい jQuery オブジェクト を返す --- // 指定されたDOM 要素を持つ、新しい jQuery オブジェクトを返します。 return ret; }, |
|
|||
© 2007-2011 by いけまさ. All rights Reserved. |