如何获得一个元素

问题描述:

我的div的集合类名...如何获得一个元素

<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> 

,我已经选择使用...

var people = $('.person') 

结果存储在一个类变量。 jQuery将此选择的结果作为HTMLDivElements数组存储 - 它们是。

后来,我想能够看看这个数组,并针对每个元素的类做出一些决定。我已经阅读了一个可能的解决方案;但是因为我没有直接处理jQuery对象,所以失败了。如何在数组中获得这些div的类名?使用纯JavaScript

这应该工作:

var people = $('.person'); 
$.each(people, function(index, el) { 
    var _this = $(el); 
    if (_this.hasClass('happy')) { 
     alert('Happy!'); 
    } else if (_this.hasClass('fat')) { 
     alert('Fat!'); 
    } 
}); 

循环通过他们:

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

或者使用jQuery:

people.each(function() 
{ 
    var class = $(this).attr('class'); 
}); 

你知道有个类fat person不具有类fat person?它继承了fatperson的CSS属性。如果您需要这样的班级名称,请使用下划线:fat_person

+0

感谢。我理解CSS类的继承。在你的例子中,我将查找类“fat”,它应该返回类“fat”和“person”的对象 – iGbanam 2011-02-09 04:37:19

要获得单个div上的所有类,请使用.attr函数。

var classes = myDiv.attr('class'); 

这将返回元素上所有类的空格分隔列表。

如果要检查是否存在特定的类,请使用.hasClass()

var hasJoy = myDiv.hasClass('joyous'); 
+1

认为值得一提的是这些是jQuery方法。 – vol7ron 2011-02-07 05:00:04

+0

对,这些是jQuery。如果你还没有jQuery对象,你可以直接使用DOM方法。 – calvinf 2011-02-08 21:58:58

我不知道你所说的“我不是一个jQuery对象直接打交道”的意思,作为$('.person')返回一个jQuery对象,围绕元素的数组包裹。

要获取元素的类,只需在jQuery对象上使用.attr('class')即可。用.map()结合这一点,你只能创建每个元素的类名称的数组:

var classes = $('.person').map(function() { 
    return $(this).attr('class'); 
}).get(); 

这将产生以下数组:

['happy person', 'fat person', ..., 'sad person'] 

正如摘自:http://bytes.com/topic/javascript/answers/91636-getting-class-name-string,这可能是值得尝试,如果你不使用jQuery。

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

div_attrs = node.attributes; 
div_class = div_attrs.getNamedItem("class").value;