当我写下以下内容时:
$("#id .class").css("display", "none");
PhpStorm警告我Inefficient jQuery usage.
我已经在这里阅读了几个关于此的问题,以及使用.find()
方法显着提高速度的this article。
所以,我尽职尽责地浏览了所有代码并更改了这样的行:
$("#id .class").css("display", "none");
对此:
$("#id").find(".class").css("display", "none");
不幸的是,它似乎只将链式函数(在本例中为.css()
)应用于页面上的第一个匹配元素。因此,当需要隐藏多个.class
元素时,新代码只会隐藏第一个元素。
我应该回到以前的方式,还是有一种更有效的方法可以使用多个元素?
答案 0 :(得分:1)
您的DOM中有多个重复的ID,这是您应该修复的另一个问题。 $('#id')
只会找到#id
的第一个实例,而#id .class
只会找到自下而上的所有实例.class
父项为#id
,因此它会在您的网页上找到您期望的所有实例。 ID应该是唯一的,因此要么修复该问题,要么只恢复您的选择器。