すべてのjQueryセレクターとトラバース関数はjQueryオブジェクトを返します。jQueryオブジェクトは、プロパティとコア関数への参照を持つ配列のようなオブジェクトです。
jQueryオブジェクトhttp://jsfiddle.net/Tj9e8/1/ですぐに利用できるプロパティと関数のリストを示す小さな例
jQuery関数をとして呼び出すと$(selector)
、セレクターに基づいて一致した要素のラップされたリストを使用してjQueryオブジェクトが作成されます。
次に例を示します。これを行う$('#test')
と、jQueryオブジェクトが作成され、DOM要素がIDでラップされますtest
。
.init
IDセレクターの処理については、jQueryの関数からの以下のコードスニペットを確認してください
elem = document.getElementById(match[2]);
//match[2] is string 'test' in '#test' that was passed to $('#test')
if (elem && elem.parentNode) {
if (elem.id !== match[2]) {
return rootjQuery.find(selector);
}
//below 2 lines allows the jQuery object to behave like array like objects
this.length = 1;
this[0] = elem; //elem is nothing but the dom node.
}
this.context = document;
this.selector = selector;
return this; //Returns jQuery object
詳細については、.init
機能コードを確認してください
以下はのスナップショットです$('#test')
。
ご覧のとおり、長さは0ですが、それでも$関数は長さ0のjQueryオブジェクトを返します。これは、エラーをスローするのではなく、次の連鎖呼び出しを保護するためです。
ほとんどの場合、要素を選択してその要素で関数を実行します。
例: $('#test').addClass('example')
。
$('#test')
文字列引数を使用してのjQuery関数を呼び出す'#test'
- jQueryは上記を呼び出し
.init
て引数のタイプを判別し、一致する要素でラップされたjQueryオブジェクトを返します(存在する場合は、jQueryオブジェクトのみ)。
jQueryオブジェクトを呼び出し.addClass
ます。これは、一致した要素のリストを内部的に反復処理し、クラスを要素に追加します。以下は.addClass
関数コードの抜粋です
if (value && typeof value === "string") {
classNames = value.split(core_rspace);
for (i = 0, l = this.length; i < l; i++) {
//^-- This is where it iterate over matched elements
elem = this[i];
if (elem.nodeType === 1) {
ここで注意すべき点は、
- $関数は常にjQueryオブジェクトを返します
jQueryオブジェクトは、次のようなjavascriptオブジェクトに他なりません。
a。一致した要素のラップされたセット.findを使用した例
b。プロパティ-プロパティを一覧表示するサンプル
c。関数-関数を一覧表示するサンプル
HTML:
<ul>
<li>Test</li>
<li class="red">Test</li>
<li>Test</li>
<li class="red">Test</li>
</ul>
JS:
var $lisample = $('ul').find('.red');
.find
以下のように、一致した要素のラップされたセットではありません。
もっと読む
- jQueryオブジェクトはどのように配列を模倣しますか?
- jQueryオブジェクトとDOM要素
- http://blog.buymeasoda.com/does-calling-the-jquery-function-return-an-ob