2011-07-28 10 views
8

Jak ustalić, czy istnieje .attr('class')?jQuery sprawdź czy istnieje klasa Attr?

Używam tego kodu:

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

To nie wydają się działać.

+3

Zastanawiasz się, dlaczego sprawdzasz, czy istnieje klasa attr. "hasClass" sprawdzi, czy ma klasę i zwykle wystarcza – locrizak

+0

czy sprawdzi czy jest to "niezdefiniowana" jednak? – Tom

+0

@ Tom: Funkcja wykonuje to, co mówi. Jeśli atrybut 'class' nie istnieje lub jest pusty, to oczywiście element nie ma klasy. Dlaczego po prostu tego nie spróbujesz: http://jsfiddle.net/sP9YR/ –

Odpowiedz

20

To zależy od tego, co chcesz. Chcesz sprawdzić, czy element posiada atrybut klasy, takie jak:

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

Jeśli tak, zastosowanie:

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

Jeśli chcesz sprawdzić, czy element ma określoną klasę, używać:

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

co jeśli chcę sprawdzić oba? lub 'hasClass' robi to w sposób dorozumiany? – Tom

+2

Tak, jeśli element nie ma atrybutu class, a zrobisz, powiedz $ (...). HasClass ("abc"), po prostu zwróci false automatycznie. – Abraham

0

Wartość zwracana, jeśli klasa atrybutu nie istnieje, jest pusta lub jest pusta.

0

ten kod działa faktycznie: 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

Spróbuj ..

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

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

1

Można sprawdzić, czy element z każdej klasy istnieje tylko przez wywołanie „długości "na obiekcie jquery.

$('.myclass').length