2017-12-01 22 views
3

私は、eq()メソッドを使用して、JQueryオブジェクトの3番目の要素を選択しようとしています。しかし、いくつかの理由で2番目と3番目の選択が変更された順に飛び出し:.eq()out of order

var selection = $("[name=input0], [name=input1], [name=input2], [name=input3]"); 
selection.eq(1); //turns out to be input2!! 

この動作の理由かもしれない何?私はスクリプト内のインデックスを使ってそれを信用できますか?

+5

この順序は、選択した順序に依存するのではなく、jQueryオブジェクトに保持される順序に依存します.jQueryオブジェクトは、DOMに表示される要素の順序によって決まります。したがって、あなたのHTMLを見れば、ここで助けになるでしょう。 –

+1

[**]コードやエラーの画像を投稿しないでください!**](https://meta.stackoverflow.com/q/303812/995714)画像とスクリーンショットは投稿にはうってつけですが、ポストはそれがなければまだ明確かつ有用です。コードの画像やエラーメッセージを投稿する場合は、実際のコード/メッセージを直接コピーして貼り付けてください。 – Rob

+2

JQueryドキュメンテーションによると、「要素が定義された順序で、オーバーヘッドをソートせずにjQueryオブジェクトを作成するには、$(array_of_DOM_elements)署名を使用してください。 – Sorix

答えて

0

回答とコメントの助けを借りて、ドキュメントを少し読んでください。

jQueryのは、彼らがDOM(HTML)で表示される順序で要素を選択し、そのことが判明:あなたはその順序を使用する場合は、jQueryの選択に直接配列アクセスを使用して
は動作しますが、場合にのみ、それを信頼することができますあなたもHTMLを担当しています。レイアウトを変更する場合は、これを覚えておく必要があります。

ボトムライン:特定の要素を選択する最良の方法ではありません。