2012-01-28 112 views
10

如何仅在没有任何类时使用jQuery来选择元素?jQuery:仅当它没有类名时才选择一个元素

我正在写一个页面,它允许html作者通过向元素添加一个类来覆盖默认的jQuery动作。它应该是任何课程。

所以标记可能是:

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

我想jQuery的,只选择第二个列表元素,因为它没有一个类。

我看过.hasClass(),但它似乎需要一个特定的类名称。

谢谢!

回答

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

完美!这只是我想要的。 – 2012-01-28 02:01:52

+0

我很乐意提供帮助。你可以通过点击左边的勾号按钮来接受我的答案,如果这是你的问题的真实答案:) – 2012-01-28 02:06:34

2

这应该做的事:$('li').not('li[class]')

+1

你的第二个'li'类型的选择是多余的。 – 2012-01-28 01:57:58

+0

是的。而我的解决方案也比其他的xD慢。至少我今天学到了一些新东西 – clime 2012-01-28 02:00:04

+0

不知何故,我认为带有:not属性的单选择器会比这个更快。我在某处读到:没有比.not更快 - 我猜测.not解决方案需要遍历DOM两次。 – 2012-01-28 02:06:14

8

这应做到:

$('li:not([class]),li[class=""]') 

演示:http://jsfiddle.net/aMC5X/

第一部分,li:not([class])使用"not selector"无线查找"has attribute"以查找根本没有class属性的任何li元素。

第二部分li[class=""]发现任何li元素的属性设置为空字符串。

+0

有趣。第二个要素是在“no class”集合中包含一个空的类名?这可能是一个好主意 - 你永远不知道。 – 2012-01-28 02:04:08

+0

那么,如果你玩弄我给你的jsfiddle,你可以看到发生了什么,没有第二部分,并决定你是否需要它在你的情况(我认为你需要它)。 – nnnnnn 2012-01-28 02:09:53

1

您可以使用此:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
} 
相关问题