4

我有一个奇怪的问题,我无法使用正常的嘶嘶声选择器在 jQuery 中正确选择某些内容:

这两行不做同样的事情。

ele.children("div.a > div").addClass("badActive");
ele.children("div.b").children("div").addClass("active");

http://jsfiddle.net/wGvEu/1/

4

2 回答 2

7

ele.children("div.a > div")选择div既是div.a元素(来自>组合器)和ele(来自.children()调用)的子元素的 s。它还暗示它ele本身代表一个div.a元素。

ele.children("div.b").children("div")选择作为元素div子元素的 s,div.b它们本身是 的子元素eleele它本身可以是任何一种元素,但它必须包含div.b子元素,并且它的div.b子元素需要有div子元素。

正如 Felix Kling 在上面的评论中所说,您需要使用.find()来搜索所有后代。这适用于您使用>组合器的第一种情况,如ele.find("div.a > div").

于 2011-07-14T18:40:41.347 回答
1

可能你想要的是:

ele.find("div.a > div").addClass("active");

这仅使用一个嘶嘶声选择器并实现您想要的。BoltClock 关于为什么你的两个例子不一样的原因是正确的。另一种说法是:.children()仅获取直接子级,而.find()将获取层次结构中“当前”元素下方的任何内容。

于 2011-07-14T18:49:56.163 回答