jQuery如何检查属性Class是否存在?

10

我该如何确定 .attr('class') 是否存在?

我正在使用以下代码:

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

它似乎不起作用。


3
为什么要检查属性类是否存在?hasClass会检查是否具有类,通常足够了。 - locrizak
它会检查是否为 undefined 吗? - Tom
@Tom:该函数正在执行其所述的操作。如果class属性不存在或为空,则显然该元素没有类。为什么不试试这个:http://jsfiddle.net/sP9YR/ - Felix Kling
5个回答

24

这取决于你想要什么。你想检查一个元素是否有类属性,比如:

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

如果是这样,请使用:

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

如果您想检查元素是否具有特定类,请使用:

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

如果我想同时检查两个条件怎么办?或者hasClass是否已经隐式地执行了这个操作? - Tom
2
是的,如果一个元素没有class属性,而你却使用了$(...).hasClass('abc'),它会自动返回false。 - Abraham

2
尝试这个...
if(jQuery('#id1').attr('class') =="") {
       alert($('#id1').attr('class'));
  }

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


2
您可以通过在jQuery对象上调用“length”来检查是否存在具有任何类的元素。
$('.myclass').length

1

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


1

这段代码实际上是有效的: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");
      }
});​

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接