jQuery - 从元素内部选择元素

时间:2011-04-27 18:13:52

标签: jquery jquery-selectors parent-child

假设我有这样的标记:

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

我想选择#moo。

为什么$('#foo').find('span')有效,但$('span', $('#foo'));没有?

7 个答案:

答案 0 :(得分:111)

你可以使用这些[从最快开始]

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

Take a look

答案 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的类的容器中的所有跨度。

DEMO

答案 6 :(得分:1)

似乎都在起作用。

请参阅小提琴:http://jsfiddle.net/maniator/PSxkS/