2011-07-28 130 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