2013-10-21 70 views
4

在下面的简单HTML中,我想获得具有class1但不具有class2的所有元素获取具有一个类而不是另一个元素的元素

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

使用getElementsByClassName('class1')我们可以得到的所有元素,然后可能通过checking if a certain class exists删除元素。

有没有更好的方式来做到这一点,而不是迭代?

我发现this interesting post关于获取多个类的元素,所以我敢问:有没有这样的事情:document.getElementsByClassName("class1 !class2")

P.S .:我不想使用jQuery。

回答

8

如果你不介意使用日益compatible.querySelectorAll()它可能只有:

var getClassOne = document.querySelectorAll('.class1:not(.class2)'); 

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

虽然没有它,你必须遍历的className 莫名其妙

+0

谢谢MackieeE,但问题是“有没有更好的方法来做到这一点?”,除了你发布的内容(whi我在我的问题中描述) – mavrosxristoforos

+0

我明白了!为快速浏览问题而抱歉 - 通过querySelectorAll()增加了一个小提琴。 – MackieeE

+1

感谢MackieeE。我不介意使用它。尽管如此,我希望看到更多的建议,但如果他们没有提出,我会接受你的答案。 – mavrosxristoforos

相关问题