Javascript 如何获取元素的类名

Javascript 如何获取元素的类名,javascript,jquery,html,Javascript,Jquery,Html,我收集了一些唱片 <div class='happy person'><img src='#' /></div> <div class='fat person'><img src='#' /></div> <div class='joyous person'><img src='#' /></div> <div class='grotesque person'><img

我收集了一些唱片

<div class='happy person'><img src='#' /></div>
<div class='fat person'><img src='#' /></div>
<div class='joyous person'><img src='#' /></div>
<div class='grotesque person'><img src='#' /></div>
<div class='sad person'><img src='#' /></div>
结果存储在类变量中。 jQuery将此选择的结果存储为一个htmldevelments数组,它们是

稍后,我希望能够查看这个数组,并就每个元素的类做出一些决定。我已经读到了一个可能的解决方案;但这失败了,因为我没有直接处理jQuery对象


如何获取数组中这些div的类名?

使用纯JavaScript循环它们:

for (var i = 0; i < people.length; i++)
{
  var class = people[i].attr('class');
}

你知道拥有一个胖子不等于拥有一个胖子吗?它从
fat
person
继承CSS属性。如果需要这样的类名,请使用下划线:
fat\u person
要获取单个div上的所有类,请使用
.attr
函数

var classes = myDiv.attr('class');  
这将返回元素上所有类的以空格分隔的列表

如果要检查特定类是否存在,请使用


我不确定您所说的“我没有直接处理jQuery对象”是什么意思,因为
$('.person')
返回一个jQuery对象,它被一个元素数组包裹起来

要获取元素的类,只需在jQuery对象上使用
.attr('class')
。将其与
.map()
结合使用,您可以为每个元素创建一个仅包含类名的数组:

var classes = $('.person').map(function () {
    return $(this).attr('class');
}).get();
这将生成以下数组:

['happy person', 'fat person', ..., 'sad person']
从:,如果您不使用jQuery,这可能值得一试

function getClassName(obj) {
   if (typeof obj != "object" || obj === null) return false;
   return /(\w+)\(/.exec(obj.constructor.toString())[1];
}
这应该起作用:

var people = $('.person');
$.each(people, function(index, el) {
    var _this = $(el);
    if (_this.hasClass('happy')) {
        alert('Happy!');
    } else if (_this.hasClass('fat')) {
        alert('Fat!');
    }
});
$(文档)。单击(函数(e){
var className=e.target.className;
警报(类名);
});
b{
背景颜色:浅绿色;
填充:10px 20px;
利润率:20px;
}

一班
二班

第三类
认为值得一提的是,这些是jQuery方法。如果没有可用的jQuery对象,您可以直接使用DOM方法。这会起作用,但我希望获得特定DOM对象的类,而不是所有对象。谢谢。我理解CSS类的继承。在您的示例中,我将查找类“fat”,该类应在
div\u class
中返回类为“fat”和“person”的对象,变量应为
div\u attrs
['happy person', 'fat person', ..., 'sad person']
function getClassName(obj) {
   if (typeof obj != "object" || obj === null) return false;
   return /(\w+)\(/.exec(obj.constructor.toString())[1];
}
var people = $('.person');
$.each(people, function(index, el) {
    var _this = $(el);
    if (_this.hasClass('happy')) {
        alert('Happy!');
    } else if (_this.hasClass('fat')) {
        alert('Fat!');
    }
});
div_attrs = node.attributes;
div_class = div_attrs.getNamedItem("class").value;