Javascript 当需要匹配多个元素时,是否可以替代$(“id.class”)语法?
当我写下如下内容时:Javascript 当需要匹配多个元素时,是否可以替代$(“id.class”)语法?,javascript,jquery,Javascript,Jquery,当我写下如下内容时: $("#id .class").css("display", "none"); PhpStorm给了我一个警告,说jQuery使用效率低下。 关于这一点,我在这里读了几个问题,其中提到使用.find()方法可以显著加快速度 因此,我尽职尽责地检查了我所有的代码,并更改了如下行: $("#id .class").css("display", "none"); 为此: $("#id").find(".class").css("display", "none"); 不幸的是
$("#id .class").css("display", "none");
PhpStorm给了我一个警告,说jQuery使用效率低下。
关于这一点,我在这里读了几个问题,其中提到使用.find()
方法可以显著加快速度
因此,我尽职尽责地检查了我所有的代码,并更改了如下行:
$("#id .class").css("display", "none");
为此:
$("#id").find(".class").css("display", "none");
不幸的是,这似乎只将链接函数(在本例中为.css()
)应用于页面上的第一个匹配元素。因此,当有多个.class
元素需要隐藏时,新代码只会隐藏第一个元素
我是应该恢复到以前的方式,还是有一种更有效的方法可以处理多个元素?您的DOM中有多个重复的ID,这是一个需要解决的不同问题
$(“#id”)
只会找到#id
的第一个实例,而#id.class
,因为CSS选择器是自下而上工作的,所以它会找到.class
的所有父级为#id
的实例,因此它会找到页面上您期望的所有实例。ID应该是唯一的,所以要么修复该问题,要么恢复选择器。检查代码。您对.find()
的理解不准确。。检查这个问题:您的DOM中有多个重复的ID,这是另一个您应该解决的问题$(“#id”)
只会找到#id
的第一个实例,而#id.class
,因为CSS选择器是自下而上工作的,所以它会找到.class
的所有父级为#id
的实例,因此它会找到页面上您期望的所有实例。ID应该是唯一的,所以要么修复该问题,要么恢复选择器@karthikr——复制顶部节点,您将能够复制OPissue@zyklus复制顶部节点是什么意思?ID在文档中应该是唯一的。@karthikr-是的,我知道,但OPs的实际问题是重复的IDs@zyklus你说得对,我在页面上注意到了相同ID的输出容器上的问题。这就是问题所在。