jquery - $ ('#id tag' ) 与 $ ('#id' ).find ('tag' ) - 哪个更可取?

标签 jquery performance

我想知道哪个选项更好,特别是在速度方面:

$('#id tag')...

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

此外,如果您将 id 和/或 tag 更改为 class 或类似 的内容,同样的答案是否适用>输入:选中

例如,哪个更好: $('#id input:checked')...$('#id').find('input:checked') ;

最佳答案

您可以根据三件事做出决定:

可读性

这与您给定的两个选择器没有太大区别。就我而言,我更喜欢 $('#id').find('inner') 语法,因为它更准确地描述了它实际执行的操作。

可重用性

如果代码的其他部分使用相同的 id 选择器(或其上下文中的某些内容),则可以缓存选择器并重用它。我自己发现重构像 $('#id inside') 这样编写的代码会更困难,因为您必须先解码 css 选择器,然后才能继续前进并找到可能的改进。

想象一下这两种情况,并不复杂

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

还有另一种情况

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

我认为第二个例子让你尖叫“缓存 id 选择器”,而第一个例子却没有。

速度

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

Here's a good performance test, if you want to know more about context-vs subset selectors performance in jQuery 。 id 的子集通常规则。当然,您可能会得到不同的结果,但在大多数情况下,都是如此。

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

关于jquery - $ ('#id tag' ) 与 $ ('#id' ).find ('tag' ) - 哪个更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502563/

相关文章:

javascript - 如何在小型设备上进行一些更改而无需刷新页面?

javascript - 使用 jQuery 为表格中的每一行着色

javascript - 引入水平滚动的长导航栏?

mysql - 有没有办法在不同主机上测试您的 MYSQL 数据库速度?

c# - 使用查询表达式时缓存?

c# - 优化验证码(避免重复检查)

javascript - 如何在 django for 循环中显示/隐藏特定元素

javascript - 查找特定文本并添加 css

MySQL查询计算列

python - Matplotlib,savefig() 的替代品以提高保存到 CString 对象时的性能?