jQuery - 从元素内部选择元素

Ale*_*lex 82 jquery parent-child jquery-selectors

假设我有这样的标记:

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

我想选择#moo.

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

Jis*_*A P 121

你可以使用任何一个[从最快开始]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")
Run Code Online (Sandbox Code Playgroud)

看一看


Pra*_*ana 51

实际上,$('#id',这个); 会在任何后代级别选择#id,而不仅仅是直接的孩子.试试这个:

$(this).children('#id');
Run Code Online (Sandbox Code Playgroud)

要么

$("#foo > #moo")
Run Code Online (Sandbox Code Playgroud)

要么

$("#foo > span")
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,.children()和.find()相似,除了前者仅沿DOM子树向下移动一层。 (3认同)

Sai*_*ala 14

您可以使用findoption 来选择另一个内部的元素。例如,要在特定 div 中查找 id 为txtName的元素,您可以使用 like

var name = $('#div1').find('#txtName').val();
Run Code Online (Sandbox Code Playgroud)


hun*_*ter 9

为什么不使用:

$("#foo span")
Run Code Online (Sandbox Code Playgroud)

要么

$("#foo > span")
Run Code Online (Sandbox Code Playgroud)

$('span', $('#foo')); 在我的机器上正常工作;)


Moh*_*jib 7

....但是 $('span', $('#foo')); 不起作用?

该方法称为提供选择器上下文

在此,您向 jQuery 选择器提供第二个参数。它可以是任何 css 对象字符串,就像您传递直接选择或 jQuery 元素一样。

例如。

$("span",".cont1").css("background", '#F00');
Run Code Online (Sandbox Code Playgroud)

上面的行将选择容器内具有名为 的类的所有跨度cont1

演示版


Cod*_*ody 6

看看这里 - 查询元素的子元素:

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