Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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
Javascript jQuery过滤器效率_Javascript_Jquery - Fatal编程技术网

Javascript jQuery过滤器效率

Javascript jQuery过滤器效率,javascript,jquery,Javascript,Jquery,我最近遇到了一个问题: 当前接受的答案似乎表明$'element'.is':hidden'比$'element:hidden'更可取,因为:hidden筛选器仅应用于单个元素 但是。。。调用.is还会在调用另一个函数时增加额外的开销 这让我想到,如果选择器是一组元素,那么上述使用的推理是否成立 还有更极端的情况呢?以以下测试用例为例: $'element.class1:not.class2:visible[rel=foo]' 最好把它们留在选择器中吗?或者将它们全部移动到单个筛选器调用中: $'

我最近遇到了一个问题:

当前接受的答案似乎表明$'element'.is':hidden'比$'element:hidden'更可取,因为:hidden筛选器仅应用于单个元素

但是。。。调用.is还会在调用另一个函数时增加额外的开销

这让我想到,如果选择器是一组元素,那么上述使用的推理是否成立

还有更极端的情况呢?以以下测试用例为例:

$'element.class1:not.class2:visible[rel=foo]'

最好把它们留在选择器中吗?或者将它们全部移动到单个筛选器调用中:

$'element'.filter'.class1:不可见.class2:可见[rel=foo]'

还是把它们锁起来更好

$('element').is('.class1').not('.class2').is(':visible').filter('[rel="foo"]')
$元素'.is'.class1'.not'.class2'.is':可见'.filter'[rel=foo]'

当前接受的答案似乎表明$'element'.is':hidden'比$'element:hidden'更可取,因为:hidden筛选器仅应用于单个元素

我一点也不这么看,假设您处理的是一个字符串,那么$some选择器:hidden不仅仅应用于单个元素;它应用于与某个选择器匹配的所有元素

还是把它们锁起来更好

$('element').is('.class1').not('.class2').is(':visible').filter('[rel="foo"]')
这将失败,因为返回布尔值:

I.选举人

描述:对照选择器、元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回true

如果要选择匹配多个条件的元素,可以将这些条件放在选择器字符串中。您应该问自己的唯一真正问题是是否在字符串中使用:hidden和其他jQuery ISM,因为这意味着jQuery无法将选择传递给浏览器内置的read:fast选择器引擎,而必须自己完成这项工作

因此,对于该示例,您可能更愿意将jQuery ISM移出它:

$('element.class1:not(.class2)[rel="foo"]').filter(":visible")
当前接受的答案似乎表明$'element'.is':hidden'比$'element:hidden'更可取,因为:hidden筛选器仅应用于单个元素

我一点也不这么看,假设您处理的是一个字符串,那么$some选择器:hidden不仅仅应用于单个元素;它应用于与某个选择器匹配的所有元素

还是把它们锁起来更好

$('element').is('.class1').not('.class2').is(':visible').filter('[rel="foo"]')
这将失败,因为返回布尔值:

I.选举人

描述:对照选择器、元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回true

如果要选择匹配多个条件的元素,可以将这些条件放在选择器字符串中。您应该问自己的唯一真正问题是是否在字符串中使用:hidden和其他jQuery ISM,因为这意味着jQuery无法将选择传递给浏览器内置的read:fast选择器引擎,而必须自己完成这项工作

因此,对于该示例,您可能更愿意将jQuery ISM移出它:

$('element.class1:not(.class2)[rel="foo"]').filter(":visible")

您可以自己测试:。虽然是一个相对轻量级的调用,因为元素已经在内存中。是DOM访问减慢了速度。将其放入一个jsperf或中,然后自己对答案进行grt…只有使用.filter not.is$…filter.class1时才能链接它们。您可以自己测试:。虽然是一个相对轻量级的调用,因为元素已经在内存中。是DOM访问减慢了速度。将其放入jsperf或中,然后自己grt答案…只有使用.filter not.is$…filter.class1时才能链接它们。我必须读两遍这很有意义,只是必须读两遍,因为它看起来是错误的方式/使用了错误的代码段,换句话说:$'element'.is':hidden'也适用于多个元素,而不仅仅是单个元素-在一般情况下。在链接的问题中,碰巧只有一个元素。我读了两遍这很有意义,只是读了两遍,因为它看起来是错误的方式/使用了错误的代码段,所以换言之:$'element'。is':hidden'也适用于:hidden到多个元素,不只是一个单一的元素-在一般情况下。在连接的问题中,碰巧只有一个元素。