获取具有一个类的元素,但不获取另一个类的元素,而无需迭代

Get elements with one class but not another without iterating

本文关键字:元素 获取 迭代 有一个 具有一 另一个      更新时间:2023-09-26

在下面的简单HTML中,我想获取class1的所有元素,而不是class2

<li class="class1 class2"></li>
<li class="class1 class3"></li>
<li class="class1 class4"></li>

通过使用getElementsByClassName('class1')我们可以获取所有元素,然后可能通过检查某个类是否存在来删除元素。

有没有更好的方法可以做到这一点,而无需迭代?

我发现了这篇关于获取具有多个类的元素的有趣帖子,所以我敢问:有这样的东西吗:document.getElementsByClassName("class1 !class2")

PS:我不想使用jQuery。

如果您不介意使用越来越兼容的.querySelectorAll()

则可以使用:
  var getClassOne = document.querySelectorAll( '.class1:not(.class2)' );

小提琴:http://jsfiddle.net/5tSGv/52/

虽然没有它,你必须以某种方式迭代类名

querySelectorAll()返回一个静态(非实时)NodeList,表示与指定的选择器组匹配的文档元素列表。

因此,如果页面没有动态生成div,您可以使用 querySelectorAll() .