Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery选择器vs筛选器()_Jquery_Performance - Fatal编程技术网

jQuery选择器vs筛选器()

jQuery选择器vs筛选器(),jquery,performance,Jquery,Performance,给定以下标记 <ul class="list"> <li>first item</li> ​<li class="item">second item</li> <li>third item</li> </ul>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 或 这不是一个很好的例子,因

给定以下标记

<ul class="list">
    <li>first item</li>
    ​<li class="item">second item</li>
    <li>third item</li>
</ul>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

这不是一个很好的例子,因为它太简单了(我知道我可以做
$(“.item”)
,但一般来说,我应该使用复杂的选择器还是过滤器函数

编辑:如果第一个更有效,什么时候使用过滤功能合适/最好?

第一个更快:

$("ul li.item")
这是正确的,因为它是等效的,但不是运行选择器引擎(Sizzle)两次才能达到目标

对于编辑:当您需要筛选当前集合,或当您需要复杂筛选器时,您可以使用…嗯。例如,如果您想链接但不想再次选择集合:

$("ul li").addClass('everyItem').filter('.item').fadeOut();
或复杂过滤器:

$("ul li").filter(function() {
  return $.data(this, 'hasSomething');
}).fadeOut();

过滤器有很多用途,这实际上取决于什么最适合你的情况。不过,关于你的问题,
$(选择器)。过滤器(选择器)
…如果可能的话,我想不出哪种情况下你会希望通过一个选择器来实现这一点。我脑子里唯一想做的是,你不能做到这一点是复杂和包装。

非常感谢,非常有意义!
$("ul li").addClass('everyItem').filter('.item').fadeOut();
$("ul li").filter(function() {
  return $.data(this, 'hasSomething');
}).fadeOut();