为什么$("div> div")的工作方式不同于$("div").children("div")?

Inc*_*ito 4 jquery jquery-selectors jquery-traversing

我有一个奇怪的问题,我不能使用正常的sizzle选择器来正确选择jQuery中的东西:

这两行不是一回事.

ele.children("div.a > div").addClass("badActive");
ele.children("div.b").children("div").addClass("active");
Run Code Online (Sandbox Code Playgroud)

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

Bol*_*ock 7

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

ele.children("div.b").children("div")选择divs是div.b元素的子元素,它们本身就是子元素ele.ele本身可能是任何一种元素,但它必须包含div.b儿童,其div.b子女需要生div孩子.

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