如何获取被点击元素的类?

224 jquery

我无法弄清楚如何获取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
})
Run Code Online (Sandbox Code Playgroud)

HTML:

<ul class="tabs">
  <li class="node-205"></li>
  <li class="node-150"></li>
  <li class="node-160"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Fen*_*ton 393

这是一个快速的jQuery示例,它为每个"li"标记添加一个click事件,然后检索所单击元素的class属性.希望能帮助到你.

$("li").click(function() {
   var myClass = $(this).attr("class");
   alert(myClass);
});
Run Code Online (Sandbox Code Playgroud)

同样,您不必将对象包装在jQuery中:

$("li").click(function() {
   var myClass = this.className;
   alert(myClass);
});
Run Code Online (Sandbox Code Playgroud)

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

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

您可以classList使用旧版浏览器进行模拟myClass.split(/\s+/);


小智 38

$("li").click(function(){
    alert($(this).attr("class"));
});
Run Code Online (Sandbox Code Playgroud)


War*_*0ck 24

我看到了这个问题,所以我想我可能会再扩展一下.这是@SteveFenton的想法的扩展.不是将click事件绑定到每个li元素,而是从uldown向下委托事件会更有效.

对于jQuery 1.7及更高版本

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

文档: .on()

对于jQuery 1.4.2 - 1.7

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

文档: .delegate()

作为jQuery 1.3 - 1.4的最后手段

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

要么

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

文档: .live()


jer*_*est 17

这应该做的伎俩:

...
select: function(event, ui){ 
   ui.tab.attr('class');
} ,
...
Run Code Online (Sandbox Code Playgroud)

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


Pus*_*raj 8

$("div").click(function() {
  var txtClass = $(this).attr("class");
  console.log("Class Name : "+txtClass);
});
Run Code Online (Sandbox Code Playgroud)


Cyb*_*tic 6

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

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

  • 需要注意的是,如果获取 id 不可靠,可以始终使用 `$(e.target)` 而不是 `$('#' + e.target.id)`,jQuery 仍然会合理处理这种情况。 (2认同)