我最近升级了我的PHPStorm集成开发环境的版本,它现在警告我jQuery的使用效率低下。
例如:
var property_single_location = $("#property [data-role='content'] .container");
提示此警告:
检查jQuery选择器是否以有效的方式使用。它建议拆分以ID选择器为前缀的后代选择器,并警告可能被缓存的重复选择器。
所以我的问题是:
为什么这是低效的,执行上述选择器的有效方法是什么?
我猜是:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
这条路对吗?
发布于 2013-05-18 10:14:01
今天我也遇到了同样的问题,多亏了Scott Kosman ,我才找到了解决方案。
基本上,答案是分别选择is,然后对下面的任何内容使用.find(...)
。以你的例子为例:
$("#property [data-role='content'] .container");
将其更改为more than twice as fast会使PhpStorm感到高兴,并且可以明显地为
$("#property").find("[data-role='content'] .container");
发布于 2013-10-18 00:07:04
我认为在使用最新版本的jQuery和浏览器时,这两种方法之间的差异可以忽略不计。我构建了一个测试,它表明,在一个非常简单的情况下,使用组合选择器而不是对id进行选择,然后查找,实际上速度要快10%:
http://jsperf.com/jquery-find-vs-insel
对于在任何深度按类别选择多个子级,"find“确实看起来更快:
http://jsperf.com/jquery-find-vs-insel/7
在jQuery论坛上有一些关于这方面的讨论,但它已经有3年的历史了:https://forum.jquery.com/topic/which-jquery-selection-is-efficient正如他们在这里指出的,如果你在同一个id选择器上做很多操作,通过缓存顶级元素可以发现最大的性能改进。另一方面,如果您只做了几个选择,则实际上不会有任何性能差异。
因此,我认为IntelliJ夸大了这种代码风格的重要性。
发布于 2015-04-17 16:24:05
第一个问题是点击Alt+Enter,选择列表中的第一个提示,然后点击Enter,你会看到它认为最有效的方法是什么。
https://stackoverflow.com/questions/12674591
复制相似问题