我有一个奇怪的问题,我无法使用正常的嘶嘶声选择器在 jQuery 中正确选择某些内容:
这两行不做同样的事情。
ele.children("div.a > div").addClass("badActive");
ele.children("div.b").children("div").addClass("active");
我有一个奇怪的问题,我无法使用正常的嘶嘶声选择器在 jQuery 中正确选择某些内容:
这两行不做同样的事情。
ele.children("div.a > div").addClass("badActive");
ele.children("div.b").children("div").addClass("active");
ele.children("div.a > div")
选择div
既是div.a
元素(来自>
组合器)和ele
(来自.children()
调用)的子元素的 s。它还暗示它ele
本身代表一个div.a
元素。
ele.children("div.b").children("div")
选择作为元素div
子元素的 s,div.b
它们本身是 的子元素ele
。ele
它本身可以是任何一种元素,但它必须包含div.b
子元素,并且它的div.b
子元素需要有div
子元素。
正如 Felix Kling 在上面的评论中所说,您需要使用.find()
来搜索所有后代。这适用于您使用>
组合器的第一种情况,如ele.find("div.a > div")
.
可能你想要的是:
ele.find("div.a > div").addClass("active");
这仅使用一个嘶嘶声选择器并实现您想要的。BoltClock 关于为什么你的两个例子不一样的原因是正确的。另一种说法是:.children()
仅获取直接子级,而.find()
将获取层次结构中“当前”元素下方的任何内容。