如何获得点击元素的类?

我不知道如何获得所单击元素的class值。

当我使用下面的代码时,我每次都得到"node-205"

jQuery:

.find('> ul')
.tabs(
{
selectedClass: 'active',
select: function (event, ui) {
//shows only the first element of list
$(this).children('li').attr('class');
},
cookie: { expires: 0 },
fx: fx
})

HTML:

<ul class="tabs">
<li class="node-205"></li>
<li class="node-150"></li>
<li class="node-160"></li>
</ul>
689141 次浏览

这应该可以达到目的:

...
select: function(event, ui){
ui.tab.attr('class');
} ,
...

有关ui的更多信息。tab参见http://jqueryui.com/demos/tabs/#Events

下面是一个jQuery的快速示例,它将单击事件添加到每个“quot;li"标记,然后检索所单击元素的class属性。

$("li").click(function() {
var myClass = $(this).attr("class");
alert(myClass);
});

同样,你不需要用jQuery来包装对象:

$("li").click(function() {
var myClass = this.className;
alert(myClass);
});

在较新的浏览器中,你可以得到类名的完整列表:

$("li").click(function() {
var myClasses = this.classList;
alert(myClasses.length + " " + myClasses[0]);
});

你可以使用myClass.split(/\s+/);在旧浏览器中模拟classList

$("li").click(function(){
alert($(this).attr("class"));
});
$("div").click(function() {
var txtClass = $(this).attr("class");
console.log("Class Name : "+txtClass);
});

我看到了这个问题,所以我想我可以再展开一点。这是对@SteveFenton的想法的扩展。与其将click事件绑定到每个li元素,不如从ul向下委派事件会更有效。

jQuery 1.7及更高版本

$("ul.tabs").on('click', 'li', function(e) {
alert($(this).attr("class"));
});

文档: .on()

jQuery 1.4.2 - 1.7

$("ul.tabs").delegate('li', 'click', function(e) {
alert($(this).attr("class"));
});

文档: .delegate()

作为jQuery 1.3 - 1.4的最后一招

$("ul.tabs").children('li').live('click', function(e) {
alert($(this).attr("class"));
});

$("ul.tabs > li").live('click', function(e) {
alert($(this).attr("class"));
});

文档: .live()

所有提供的解决方案都迫使你事先知道要单击的元素。如果你想从任何点击的元素中获取类,你可以使用:

$(document).on('click', function(e) {
clicked_id = e.target.id;
clicked_class = $('#' + e.target.id).attr('class');
// do stuff with ids and classes
})