jQuery-要素内から要素を選択する


94

私がこのようなマークアップを持っているとしましょう:

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>

#mooを選択します。

なぜ$('#foo').find('span')機能するの$('span', $('#foo'));ですか?


10
なんで$('#moo')?;)ところで。動作します:jsfiddle.net/fkling/k5X2r
Felix Kling

理由はわかりませんが、選択したスパンにフックする関数が、ページ内のすべてのスパンに適用されます。#foo内のスパンだけではありません:(
Alex

2
varで要素が既に選択されている場合はvar ele = $("div #foo")どうでしょう。たとえば、ここから(配列参照を使用せずに)ここからmooを取得する方法から始めます
Worthy7

回答:


129

これらのどれでも使用できます[最速から開始]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")

見てください


1
3つ目はspan#fooでなく、span#mooである必要があると思いますか?
xr280xr 2013

60

実際、$( '#id'、this); 直接の子だけでなく、子孫レベルで#idを選択します。代わりにこれを試してください:

$(this).children('#id');

または

$("#foo > #moo")

または

$("#foo > span")

要素にはクラスではなくID があるため、何も選択されませんmoo
Felix Kling、2011

3
それは価値があることに注意だ.children().find()DOMサブツリーダウン元の旅唯一のレベルことを除いて類似しています。
ケビン

おかげでうまくいきました;-)
Ali Lashini

9

なぜ使用しないのですか?

$("#foo span")

または

$("#foo > span")

$('span', $('#foo')); 私のマシンでは問題なく動作します;)


$($(elementA), 'tr#' + key + ' span')が機能しない(jQuery 1.10.2)
Cody


6

ここを見てください- 要素のサブ要素をクエリするには

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');


3

.... but $( 'span'、$( '#foo')); 動作しませんか?

このメソッドは、セレクターコンテキストを提供するものとして呼び出されます

ここでは、jQueryセレクターに2番目の引数を指定します。直接選択またはjQuery要素に渡すのと同じように、任意のcssオブジェクト文字列にすることができます。

例えば。

$("span",".cont1").css("background", '#F00');

上記の行は、という名前のクラスを持つコンテナ内のすべてのスパンを選択しますcont1

デモ


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.