2

我有一个这样的查询:

$('#tabContainer li');

JetBrains WebStorm IDE 强调它是一个低效的查询。它建议我改用这个:

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

怎么解释?是否有解释此类情况的文档?

4

3 回答 3

3

在这篇文章中,有一部分是特异性的(第四点)。

如果有$('#tabContainer li')li将查询文档中的所有内容。然后li将检查其中的每一个以查看它们是否有 parent #tabContainer

为了更快地得到它,$('#tabContainer').find('li')可以使用。li 将在文档中唯一的#tabContainer 中搜索。

但显然,如果您选择使用 ID,则性能应该不会有太大改善(来自关于 SO 的这个问题的答案也谈到了特异性)。

于 2012-10-01T11:32:32.807 回答
0

jQuery 会将前一个表达式翻译成后者。因此,唯一的区别是 jQuery 中的一些调用开销。在我看来是微不足道的。

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

于 2012-10-01T11:21:36.677 回答
0

我相信优化的原因是速度。Find 可能非常快,但对您的特定用例进行基准测试不会有任何坏处。例如,这是一个测试,它使用了一些与您尝试做的类似的可能变化。

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

在这种情况下,查找速度非常快。现在,如果您只运行该选择一次;只要易于阅读/理解其意图,您采用哪种方式都无关紧要。

于 2012-10-01T11:41:11.603 回答