このようなマークアップがあるとしましょう:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
#mooを選択します。
なぜ$('#foo').find('span')
は機能するが、$('span', $('#foo'));
は機能しないのか?
これらのいずれかを使用できます[最速から開始]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
実際、$( '#id'、this);直接の子だけでなく、任意の子孫レベルで#idを選択します。代わりにこれを試してください:
$(this).children('#id');
または
$("#foo > #moo")
または
$("#foo > span")
なぜ単に使用しないのですか:
$("#foo span")
または
$("#foo > span")
$('span', $('#foo'));
は私のマシンで正常に動作します;)
ここをご覧ください-要素のサブ要素を照会するため:
$(document.getElementById('parentid')).find('div#' + divID + ' span.child');
find
オプションを使用して、別の要素を選択できます。たとえば、特定のdivでid txtNameの要素を見つけるには、次のように使用できます
var name = $('#div1').find('#txtName').val();
....しかし$( 'span'、$( '#foo'));動作しませんか?
このメソッドは、 セレクタコンテキスト を提供すると呼ばれます。
これで、jQueryセレクターに2番目の引数を指定します。直接選択またはjQuery要素に渡すのと同じように、任意のcssオブジェクト文字列を指定できます。
例えば。
$("span",".cont1").css("background", '#F00');
上記の行は、cont1
という名前のクラスを持つコンテナ内のすべてのスパンを選択します。
両方とも機能しているようです。
フィドルを参照してください: http://jsfiddle.net/maniator/PSxkS/