Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 .is()、.delegate()等的jQuery选择器性能_Javascript_Jquery_Performance_Jquery Selectors - Fatal编程技术网

Javascript .is()、.delegate()等的jQuery选择器性能

Javascript .is()、.delegate()等的jQuery选择器性能,javascript,jquery,performance,jquery-selectors,Javascript,Jquery,Performance,Jquery Selectors,当使用jQuery选择元素时,我知道像input.foo这样的东西比.foo快,特别是在IE中。但是当使用.is()时呢?似乎情况正好相反,因为对.foo选择器进行的解析更少,对所讨论的元素进行的检查也更少。我说的对吗?如果是,相同的逻辑是否适用于.delegate() 谢谢 Jim不确定我是否理解.is()和.delegate()之间的相关性;一个是过滤器,另一个用于绑定事件。对于性能问题,我倾向于在jsperf.com上运行一些测试,因为使用.is()和.delegate()总是有一个上下文

当使用jQuery选择元素时,我知道像
input.foo
这样的东西比
.foo
快,特别是在IE中。但是当使用
.is()
时呢?似乎情况正好相反,因为对
.foo
选择器进行的解析更少,对所讨论的元素进行的检查也更少。我说的对吗?如果是,相同的逻辑是否适用于
.delegate()

谢谢


Jim不确定我是否理解
.is()
.delegate()
之间的相关性;一个是过滤器,另一个用于绑定事件。对于性能问题,我倾向于在jsperf.com上运行一些测试,因为使用
.is()
.delegate()
总是有一个上下文,我认为在这些情况下它并不重要。在这两种情况下,选择器都不用于查询任何内容,而只是用于匹配给定元素…@GregPettit传递给
.delegate()
的选择器在事件冒泡到您委托的对象时使用。事件的原始目标与选择器(也称为筛选)相匹配(就像您使用
.is()
)一样),以查看事件处理程序是否应该运行。@ŠimeVidas这就是为什么我认为在可能的情况下,避免使用过特异性进行筛选会更快。因为实际上没有查询任何内容,而您只是想看看元素是否符合条件,所以提供的条件越少,它检查的速度就越快。@JAAulde是的,我希望条件越少,检查的速度就越快,但这并不是很快。这个过程通常很快(不考虑选择器)。在
input.foo
.foo
的情况下,如果您确定您持有输入元素,则没有理由使用较长的选择器。我不确定我是否理解
.is()
.delegate()
之间的相关性;一个是过滤器,另一个用于绑定事件。对于性能问题,我倾向于在jsperf.com上运行一些测试,因为使用
.is()
.delegate()
总是有一个上下文,我认为在这些情况下它并不重要。在这两种情况下,选择器都不用于查询任何内容,而只是用于匹配给定元素…@GregPettit传递给
.delegate()
的选择器在事件冒泡到您委托的对象时使用。事件的原始目标与选择器(也称为筛选)相匹配(就像您使用
.is()
)一样),以查看事件处理程序是否应该运行。@ŠimeVidas这就是为什么我认为在可能的情况下,避免使用过特异性进行筛选会更快。因为实际上没有查询任何内容,而您只是想看看元素是否符合条件,所以提供的条件越少,它检查的速度就越快。@JAAulde是的,我希望条件越少,检查的速度就越快,但这并不是很快。这个过程通常很快(不考虑选择器)。在
input.foo
.foo
的情况下,如果您确定您持有输入元素,则没有理由使用较长的选择器。