假设我有这样的标记:
<div id="foo">
...
<span id="moo">
...
</span>
...
</div>
我想选择#moo。
为什么$('#foo').find('span')
有效,但$('span', $('#foo'));
没有?
答案 0 :(得分:111)
你可以使用这些[从最快开始]
$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
答案 1 :(得分:49)
实际上,$('#id',这个);会在任何后代级别选择#id,而不仅仅是直接的孩子。试试这个:
$(this).children('#id');
或
$("#foo > #moo")
或
$("#foo > span")
答案 2 :(得分:8)
为什么不使用:
$("#foo span")
或
$("#foo > span")
$('span', $('#foo'));
在我的机器上工作正常;)
答案 3 :(得分:6)
在这里查看 - 查询元素的子元素:
$(document.getElementById('parentid')).find('div#' + divID + ' span.child');
答案 4 :(得分:3)
您可以使用find
选项在另一个内部选择一个元素。例如,要在特定div中查找ID为 txtName 的元素,您可以使用类似
var name = $('#div1').find('#txtName').val();
答案 5 :(得分:2)
....但是$('span',$('#foo'));不起作用?
此方法称为提供selector context。
在这种情况下,您为jQuery选择器提供第二个参数。它可以是任何css对象字符串,就像您通过直接选择或使用jQuery元素一样。
例如
$("span",".cont1").css("background", '#F00');
上面的行将选择具有名为cont1
的类的容器中的所有跨度。
答案 6 :(得分:1)