2011-07-28 100 views
8

如何确定.attr('class')是否存在?jQuery检查Attr类是否存在?

我使用这个代码:

if(jQuery(this).attr('class') != undefined && jQuery(this).hasClass('myclass')) { 
    //Do something 
} 

这似乎并没有工作。

+3

只是想知道为什么你要检查attr类是否存在。 'hasClass'将检查它是否有一个类,通常是足够的 – locrizak

+0

它会检查它是否是undefined? – Tom

+0

@Tom:该功能正在做它说的。如果'class'属性不存在或者它是空的,那么显然这个元素没有这个类。你为什么不试试它:http://jsfiddle.net/sP9YR/ –

回答

20

这取决于你想要什么。你想检查元素是否具有class属性,如:

<div class></div> 
<div class=""></div> 
<div class="abc"></div> 

如果是这样,使用:

if ($('div').attr('class') != undefined)... 

如果你想检查是否该元素有一个特定的类,使用方法:

if ($('div').hasClass('abc'))... 
+0

如果我想检查两者,该怎么办?或'hasClass'无论如何都隐含这样做? – Tom

+2

是的,如果一个元素没有class属性,并且你做了$(...)。hasClass('abc'),它会自动返回false。 – Abraham

0

如果属性类不存在,则返回值为null或空字符串。

0

此代码实际工作:fiddle

HTML:

<div></div> 
<div class="myclass"></div> 
<div class="blah"></div> 
<div></div> 
<div class="myclass"></div> 
<div class="myclass"></div> 
<div></div> 
<div class="myclass andAnotherClass"></div>​ 

JS:

$("div").each(function(){ 
if(jQuery(this).attr('class') != undefined && jQuery(this).hasClass('myclass')) { 
    jQuery(this).html("I have it"); 
     } else { 
      jQuery(this).html("I don't have it"); 
     } 
});​ 
1

试试这个..

if(jQuery('#id1').attr('class') =="") { 
     alert($('#id1').attr('class')); 
    } 

<div id="id1">test</div>

1

您可以通过只调用“长度检查,如果有任何一个类的元素存在'在jquery对象上。

$('.myclass').length