2013-04-02 4 views
11

にDOM要素を割り当てるために動作しない私持っているように変数を割り当てプログラム:jQueryのセレクタは、変数

var theList = document.getElementById('theList'); 

それはjqueryのを使用しますが、私はこのようにそれを書いた場合:

var theList = $('#theList'); 

その変数を使用する関数は機能しません。

jQueryセレクタとgetElementByIdの違いは何ですか?

+1

'theList = $( '#theList')[0]'や 'theList = $( '#theList').get(0)'を使いたいです。 – zzzzBov

答えて

1

最初のtheListはDOM要素です。第2のtheList(これは理想的には$theListと書かれている)はjQuery objectです。あなたの機能は明らかに前者であり後者ではないと期待しています。

17

document.getElementByIdは、そのノードのプロパティに直接アクセスできるネイティブDOM要素オブジェクトを返します。

jQuery関数は代わりに、 "jQueryコレクション"、つまり関連する一連の関数/プラグインなどを持つjQueryオブジェクトを返します。これはDOMノードの配列のように動作します。

後者から前者を伝えるために使用される一般的な慣例

$後者を含む変数の接頭辞である:

はDOMノードとしてjQueryのコレクションから個々の要素を抽出し、いずれか.get(n)又は[n]を使用します。 $( '#のtheList')はjQueryオブジェクトではなく、DOMオブジェクトを返すためです

var id = $theList.attr('id'); // jQuery function 
var id = theList.id;   // native property 
+0

"DOM要素対jQueryオブジェクト"を検索した後、私はこのhttp://stackoverflow.com/questions/6974582/jquery-object-and-dom-elementに遭遇し、var theList = document.getElementById( 'リスト'); var theList = $( '#theList')になります。get(0); – user1469779

+0

@ user1469779はい、そう多くは同じです。 – Alnitak

+0

変換を行うために私が質問したのとまったく同じコード。あなたは、変換プロセスを含めるために編集を行うことができました。 – TheManWithNoName

0

var $theList = $('#theList'); // jQuery collection 
var theList = $theList[0];  // DOM node 
var theList = $theList.get(0); // also a DOM node 

属性とプロパティのアクセスでは、jQueryのコレクションかどうかを持っているかどうかによって異なります。 JQueryオブジェクトには、同じメソッドがありません& Javascript要素/ノードの可能性があります。

-1

標準のgetElementByID関​​数はDOM要素へのJavaScript参照を返しますが、jQuery関数はjQueryオブジェクト(DOM要素へのJavaScript参照を0回以上参照する配列のような構造を含む)を返します。

あなたが使用することができ、それらは互換性を持たせるために:

var theList = $('#theList').get(0); 

NB:編集を世界の平和を維持し、私の急いコメンターが指摘して速かったという用語型付けを修正支援します。

+0

いいえ、実際には「jQueryオブジェクトの配列」ではありません。これは、そのコレクション内の個々のDOM要素を表す数値的にインデックス付けされたプロパティのセットを持つ単一のjQueryオブジェクトです。 – Alnitak

+0

これは「JavaScriptオブジェクト」ではなく、DOM要素です。 jQueryは配列を生成しませんが、[配列のような](http://stackoverflow.com/a/11886626/497418)です。 – zzzzBov

+0

jQueryオブジェクトには、個々のオブジェクトのリスト構造が含まれています。セレクタによって返される項目が1つだけの場合は、単一のjQueryオブジェクトを参照します。 jQuery( '。everything')を実行すると、オブジェクトは1つではなくオブジェクトのリストになります。 – TheManWithNoName

0

getElementById関数は、指定されたidを持つ最初の要素を返します。ここで、jqueryセレクターは「ラップされたセット」と呼ばれるオブジェクトを返します。 each関数を使用してiterateし、関数を呼び出すことができます。

この記事を参照:http://www.devx.com/codemag/Article/40923