PHPStorm IDE中的低效jQuery使用警告
我最近升级了我的PHPStorm IDE版本,现在它警告我关于低效的jQuery使用情况。
例如:
var property_single_location = $("#property [data-role='content'] .container");
提示此警告:
检查以有效的方式使用jQueryselect器。 它build议拆分以IDselect符开头的后代select器,并警告可能被caching的重复select器。
所以我的问题是:
为什么这是低效的,做上述select的有效方法是什么?
我猜在:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
这是正确的吗?
我今天也有同样的问题,能够在这里得到Scott Kosman的解答。
基本上,答案是单独selectID,然后在下面使用.find(...)
。 举个例子:
$("#property [data-role='content'] .container");
改变它到这使得PhpStorm高兴,可以显然是两倍以上的速度 :
$("#property").find("[data-role='content'] .container");
我相信在使用最新版本的jQuery和浏览器时,这两种方法之间的区别是微不足道的。 我构build了一个testing,显示它现在实际上是一个组合的select器,而不是selectid的10%,然后find一个非常简单的情况:
http://jsperf.com/jquery-find-vs-insel
为了在任何深度上按照课程select多个孩子,“查找”似乎更快:
http://jsperf.com/jquery-find-vs-insel/7
在jQuery论坛上有一些关于这个问题的讨论,但它的3岁: https : //forum.jquery.com/topic/which-jquery-selection-is-efficient正如他们在这里指出的,如果你正在做很多在相同的idselect器上进行操作时,通过caching顶层元素可以发现最大的性能提升。 另一方面,如果你只做了几个select,那么几乎没有性能差异。
因此,我相信IntelliJ夸大了这种代码风格的重要性。
第一个问题是按Alt + Enter,然后select列表中的第一个提示,然后按Enter键,你会看到它认为最有效的方法。