如何获得一个元素
问题描述:
我的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
?它继承了fat
和person
的CSS属性。如果您需要这样的班级名称,请使用下划线:fat_person
。
答
要获得单个div上的所有类,请使用.attr
函数。
var classes = myDiv.attr('class');
这将返回元素上所有类的空格分隔列表。
如果要检查是否存在特定的类,请使用.hasClass()
。
var hasJoy = myDiv.hasClass('joyous');
答
我不知道你所说的“我不是一个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;
感谢。我理解CSS类的继承。在你的例子中,我将查找类“fat”,它应该返回类“fat”和“person”的对象 – iGbanam 2011-02-09 04:37:19