jQuery:$(‘#id tag’)vs. $(‘#id’) find(‘tag’) – 哪个更好?

前端之家收集整理的这篇文章主要介绍了jQuery:$(‘#id tag’)vs. $(‘#id’) find(‘tag’) – 哪个更好?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道哪个选项更好,特别是在速度方面:
$('#id tag')...

要么

$('#id').find('tag')...

此外,如果您将id和/或标签更改为类,或类似输入的内容,那么相同的答案是否适用?

例如,哪个更好:$(‘#id input:checked’)…或$(‘#id’)。find(‘input:checked’);?

解决方法

你可以根据你的决定3件事情:

可读性

这与您的两个给定的选择器没有太大的区别。对我来说,我更喜欢$(‘#id’)。find(‘inner’)语法,因为它更准确地描述了它正在做什么

可重用性

如果您的代码的其他部分使用相同的id选择器(或其上下文中的某个),则可以缓存选择器并重新使用它。我自己很难重写已经写过这样的$(‘#id inner’)的代码,因为你必须首先解码css选择器,然后才能继续下去并找到可能的改进。

想象这两种情况并不复杂

$('#hello .class_name tag').doThis();
$('#hello .other_name input').doThat();

而另一种情况

$('#hello').find('.class_name tag').doThis();
$('#hello').find('.other_name input').doThat();

我认为第二个例子尖叫着你«缓存id选择器»,而第一个不。

速度

性能始终是一个好点,在这种情况下,在大多数浏览器中,具有查找功能的id选择器做得更好,因为它首先建立了上下文,并且可以将降序选择器应用于较小的元素子集。

Here’s a good performance test,if you want to know more about context-vs subset selectors performance in jQuery. ids的子集通常规则。当然,你可以得到不同的结果,但在大多数情况下,他们会做到。

所以,从我的角度来看,对于子集选择器,3到0。

猜你在找的jQuery相关文章