Javascript .is()、.delegate()等的jQuery选择器性能
当使用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()总是有一个上下文
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
的情况下,如果您确定您持有输入元素,则没有理由使用较长的选择器。