我有这样的查询:
$('#tabContainer li');
JetBrains WebStorm IDE将其视为低效查询。它建议我改用它:
$('#tabContainer').find('li')
怎么解释?是否有文件解释此类案件?
答案 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
在这种情况下,发现非常快。现在,如果你只是一次运行那个选择;只要它易于阅读/理解其意图,你做哪种方式并不重要。