给出以下标记
<ul class="list">
<li>first item</li>
<li class="item">second item</li>
<li>third item</li>
</ul>
这两个表达式选择第二个里哪一个更好?
$("ul li.item")
or
$("ul li").filter(".item")
这不是一个很好的例子,因为它太简单了(我知道我可以这样做$(".item")
,但一般来说,我应该使用复杂的选择器还是过滤器函数?
EDIT:如果第一种效率更高,那么什么时候使用过滤功能合适/最好?
第一个更快:
$("ul li.item")
这是正确的,因为它是等效的,但没有运行选择器引擎(Sizzle)两次才能到达那里。
对于您的编辑:你用.filter()...好吧,当您需要过滤当前的集合时,或者当您需要复杂的过滤器时。例如,如果您想链接但不想再次选择该集合:
$("ul li").addClass('everyItem').filter('.item').fadeOut();
或者一个复杂的过滤器:
$("ul li").filter(function() {
return $.data(this, 'hasSomething');
}).fadeOut();
有many过滤器的用途,这实际上取决于具体情况,哪种最适合。至于你的问题,$(selector).filter(selector)
...如果可能的话,我想不出您会希望通过单个选择器实现此目的的情况。我唯一想到的就是你can't这样做很复杂:has() and :not()包装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)