2016-07-05 13 views
0

JavaScriptでDOM要素を選択しました。今セレクタとJavaScript識別子を正しく組み合わせる方法は?

var myParentElement = document.getElementById('myParentId'); 

、のが見え、有効な入力要素である、1つの子である最初の要素を選択するために、jQueryのを使用して、私がしたいとしましょう、そして、ここで指定された属性(特定の値を持っており、I要素の名前を確認したい)。

$([name="myChildName"]).children(':input:enabled:visible:first'); // ? 

上記のスニペットは、私はそれを修正すべきか、間違っていますか? (私は少しCSSを知っていますが、あまりjQueryはありません)。

追加要件:実際に、私は名前を持っているとしてではなく、IDの最初の行よりも小さな少し複雑だった、申し訳ありません:私はjQueryの1.7.2

EDITに制限されています。

とにかく、あなたのアドバイスのおかげで、私が探していた解決策が見つかりました: $( "[name = '+ myNameIdentifier +']")フィルタ( ":入力:有効:可視:最初"); IIRC 最初の二重引用符は必ずでなければならず、それらを含めないとばかげているエラーです。

さらに、私は子供の間の違いを見落とし、見つけてフィルタリングしました。私の質問は不明でした。私は、指定された名前のすべての要素を選択し、その選択項目にフィルタを適用したい(子供や子孫については気にしない)。

答えて

1

使用children selector(>)

$('#myParentId > [name="myChildName"]:input:enabled:visible:first') 
+1

私はそれについては考えていませんでしたが、明らかにそれは明らかでした:( ありがとう!:) – Toto

1

$ .children()要素の子要素のすべてを返しますので、あなたのコードは、実際に:input:enabled:visible:first内部[name="myChildName"]要素を検索しようとし、それをフィルタリングしていません。あなたはおそらくしたい:

$('#myParentId').children(':first-child:enabled:visible') 
+0

おかげで説明のために、私はかなりしかし、理解していない、$([名前は= "myChildNameは"])私のリストを与えるべきではありません1つではない(afaik、名前、IDとは異なり、ドキュメント内で一意である必要はありません)。 また、提案されたコードに関しては、.children jQuery固有のものではありませんか? myParentElementはjQueryの方法では選択されていないため、通常のHTMLElementです。彼らはjQueryの.children()を使用することを許可していませんか? – Toto

+0

1. '$([name =" myChildName "])'本当にリストを返します。しかし、「.children()」は「リストのすべてのメンバー」を意味するわけではありません。「要素の子要素」 2.あなたは正しいです、私はちょうど修正済みです私のコードはjqueryで始まり、通常のHTMLElementオブジェクトでは動作しません。 –

関連する問題