jQuery - 从元素内部选择元素

发布于 2024-11-03 20:04:37 字数 251 浏览 5 评论 0原文

假设我有一个这样的标记:

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

并且我想选择#moo。

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

let's say I have a markup like this:

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

and I want to select #moo.

why $('#foo').find('span') works, but $('span', $('#foo')); doesn't ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

与君绝 2024-11-10 20:04:37

您可以使用其中任何一个[从最快的开始]

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

看看

You can use any one these [starting from the fastest]

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

Take a look

白云不回头 2024-11-10 20:04:37

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

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

$("#foo > #moo")

$("#foo > span")

Actually, $('#id', this); would select #id at any descendant level, not just the immediate child. Try this instead:

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

or

$("#foo > #moo")

or

$("#foo > span")
書生途 2024-11-10 20:04:37

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

var name = $('#div1').find('#txtName').val();

You can use find option to select an element inside another. For example, to find an element with id txtName in a particular div, you can use like

var name = $('#div1').find('#txtName').val();
疯狂的代价 2024-11-10 20:04:37

为什么不直接使用:

$("#foo span")

$("#foo > span")

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

Why not just use:

$("#foo span")

or

$("#foo > span")

$('span', $('#foo')); works fine on my machine ;)

凑诗 2024-11-10 20:04:37

看一下这里 - 查询元素的子元素

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

Have a look here -- to query a sub-element of an element:

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

彼岸花似海 2024-11-10 20:04:37

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

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

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

例如。

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

上面的行将选择容器内具有名为 cont1 的类的所有范围。

演示

....but $('span', $('#foo')); doesn't work?

This method is called as providing selector context.

In this you provide a second argument to the jQuery selector. It can be any css object string just like you would pass for direct selecting or a jQuery element.

eg.

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

The above line will select all spans within the container having the class named cont1.

DEMO

强者自强 2024-11-10 20:04:37

两者似乎都在工作。

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

both seem to be working.

see fiddle: http://jsfiddle.net/maniator/PSxkS/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文