jQuery能否仅针对顶级执行复合选择? (a.k.a.“如何避免链接儿童”)

时间:2010-05-12 17:54:40

标签: jquery jquery-selectors

基本上,有没有办法写

a.children('.outer').children('.inner')

没有中间选择器?我不能写

$('.outer > .inner', a)

因为我不想对a进行全面深度搜索 - 我知道.outer元素是a的直接子元素。

这部分是“优雅”的问题,但部分是因为我试图避免“一次性”元素集。是的,jQuery实际上可以做同样的事情,但是当它知道完整查询的意图时,它有更好的优化机会(至少在理论上)。

2 个答案:

答案 0 :(得分:3)

你可以这样做,从直接的孩子开始,而不是在.outer进行全面深度搜索开始:

$('> .outer > .inner', a)

或者,略有不同,这个:

a.find('> .outer > .inner')

You can see a demo of both working here

答案 1 :(得分:2)

“>”选择器是你需要的。它将选择直接子元素,而不是所有级别的后代:http://api.jquery.com/child-selector/