需要匹配多个元素时,替代$(“#id .class”)语法?

时间:2014-08-10 00:15:29

标签: javascript jquery

当我写下以下内容时:

$("#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元素时,新代码只会隐藏第一个元素。

我应该回到以前的方式,还是有一种更有效的方法可以使用多个元素?

1 个答案:

答案 0 :(得分:1)

您的DOM中有多个重复的ID,这是您应该修复的另一个问题。 $('#id')只会找到#id第一个实例,而#id .class只会找到自下而上的所有实例.class父项为#id,因此它会在您的网页上找到您期望的所有实例。 ID应该是唯一的,因此要么修复该问题,要么只恢复您的选择器。