如何使用jQuery获取类名

7
假设我有一个像这样的元素:
<div id="dv" class="red green blue">Something Here !!</div>

我使用了以下内容:
alert($('#dv').attr('class'));

但它同时给我三个,我需要分别存储在数组中。如何使用jquery获取这些类名?应该很简单,对吧?
5个回答

14
var classNames = $('#dv').attr('class').split(' ');

如果你只需要知道一个元素是否拥有某个类,你可能想要使用

if( $('#dv').is('.green') ){
    alert('its green!');
}
或者
if( $('#dv').hasClass('green') ){
    alert('its green!');
}

这是一个派生函数。注意不同的表示法。

“.className”和“className”


8

根据您的目标(您是否实际需要一个数组,可能有更快的方法!),有几种方法可供选择。

要获取类的数组,请使用.attr().split()

$('#dv').attr('class').split(' ') == ['red', 'green', 'blue']

使用.attr()方法获取字面字符串:
$('#dv').attr('class') == 'red green blue'

要检查一个类是否存在,使用.hasClass()方法:

$('#dv').hasClass('red') == true

+1 对于 hasClass,如果 OP 正试图将 class 属性拆分为数组,则更有可能需要它。 - Andy E
@Andy E的头脑 - 考虑到ID是“dv”,类别是“红色绿色蓝色”,我想知道类别属性是否被用作RGB值的存储?无论如何,+1,因为Nick通过覆盖基础达到了他的正常标准。 - user113716

3

class是一个属性,因此您可以使用var classname=$("#dv").attr("class")获取它, 然后您可以使用var array=classname.split(" ");将其拆分为数组。


2

使用attr(),您可以设置或检索任何属性。如果您有多个类,则可以使用split("separator")拆分attr返回的字符串。Split会返回一个数组。 $.each(array, function(i, data){})允许您对数组中的每个值执行某些操作。将它们结合在一起,就可以得到以下结果:

$.each( $("#dv").attr("class").split(" "), function(i, data) {
    alert(data)
})

以下是您的代码示例演示: http://jsfiddle.net/Cq5JD/


该示例演示了您的代码。

1

使用这个

alert($('#dv').attr('class'));

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