jQuery效率

时间:2012-10-01 11:14:20

标签: jquery html

我有这样的查询:

$('#tabContainer li');

JetBrains WebStorm IDE将其视为低效查询。它建议我改用它:

$('#tabContainer').find('li')

怎么解释?是否有文件解释此类案件?

3 个答案:

答案 0 :(得分:3)

在这个article中,有一部分特异性(第四点)。

如果您有$('#tabContainer li'),则会查询文档中的所有li。然后,将检查每个li以查看他们是否有父#tabContainer

为了更快地使用$('#tabContainer').find('li'),可以使用{{1}}。将在#tabContainer中搜索li,这在文档中是唯一的。

但显然,如果你选择使用ID,那么性能应该没有太大改善(来自question on SO的答案也谈到了特异性)。

答案 1 :(得分:0)

jQuery会将前一个表达式转换为后者。因此唯一的区别是jQuery中的一些调用开销。在我看来,它可以忽略不计。

但是:$('#tabContainer').find('li')提高了可读性(至少对那些不太熟悉选择器语法的人而言)并且我认为这是使用它的一个很好的理由..

答案 2 :(得分:0)

我相信优化的原因是速度。查找可以非常快,但对您的特定用例进行基准测试不会有什么影响。例如,这是一个使用类似于您尝试的一些可能变化的测试。

http://jsperf.com/jquery-find-vs-context-sel/9

在这种情况下,发现非常快。现在,如果你只是一次运行那个选择;只要它易于阅读/理解其意图,你做哪种方式并不重要。