9

我有这样的东西

<div id="div1">
   <span class="label">some text</span>
</div>
<div id="div2">
   <span class="label">some text</span>
</div>

我想通过 id 选择一个给定的跨度,然后通过类。类似#div1.label#div2.span但这种方式不起作用。我怎么能?

4

6 回答 6

15

使用空格表示元素是子元素:

$('#div1 .label');
$('#div2 span');
$('#div2 span.label');

#div1.label将选择一个 id 为 div1 和一个标签类的元素。

于 2012-09-19T14:17:20.847 回答
4

你可以做

$("#div1 span.label")

如果你使用#div1.label你实际上是在选择一个带有 iddiv1并且有 class的元素label

于 2012-09-19T14:16:46.357 回答
4

你几乎拥有它:

$("#div1 .label");

后代选择器

选择作为给定祖先的后代的所有元素。


您还可以使其更具体:

$("#div1 > .label");

子选择器

选择“parent”指定的元素的“child”指定的所有直接子元素。

于 2012-09-19T14:16:51.430 回答
1

#div1.label 或 #div2.span

你想错了,在你正在抓取的选择器中,div1 的 ID 和div1标签。(这不是您的 HTML 的结构方式,以及您要查找的内容)

你需要这些是:

$('#div1 .label');
$('#div2 .label');

中间的空格就像在 CSS 语法中一样,它寻找一个子元素,在这种情况下,它需要一个标签类(您也可以放入span.label以获得更多特异性)

如果您希望它更加模糊并在其中捕获所有带有 span.label 的 div,您可以这样做:

$('div span.label'); // this would capture all of them
$('div[id^="div"] span.label'); // assuming they all start with the ID "div" then a #
于 2012-09-19T14:18:53.253 回答
1

应该是$('#div1 .label')$('#div2 span')。您需要单独使用空间

于 2012-09-19T14:17:28.920 回答
0

这个简单的代码对我有用$('#prettyId > label');

于 2020-07-02T09:48:21.237 回答