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键,你会看到它认为最有效的方法。