我有一个奇怪的问题,我不能使用普通的sizzle选择器来正确选择jQuery中的东西:
这两行没有做同样的事情。
ele.children("div.a > div").addClass("badActive");
ele.children("div.b").children("div").addClass("active");
答案 0 :(得分:7)
ele.children("div.a > div")
选择div
个div.a
个元素(来自>
组合子)和ele
(来自.children()
的子项呼叫)。它还意味着ele
本身代表div.a
元素。
ele.children("div.b").children("div")
选择div
元素的div.b
个ele
元素,它们本身就是ele
的子元素。 div.b
本身可以是任何类型的元素,但它必须包含div.b
个孩子,其div
个孩子需要有.find()
个孩子。
正如Felix Kling在上述评论中所说,您需要使用>
来搜索所有后代。这适用于您使用ele.find("div.a > div")
组合子的第一个案例,{{1}}。
答案 1 :(得分:1)
你想要的可能是:
ele.find("div.a > div").addClass("active");
它只使用一个嘶嘶声的选择器,实现你想要的。 BoltClock是正确的,为什么你的两个例子不起作用。另一种说法是:.children()
只获得直接子项,而.find()
将获得“current”元素下面的层次结构中的任何内容。