使用event.target获取类的值?

12

我有一个class为'tag'的DOM元素。

我想要检查它的class值是否为tag,如果是则弹出一个消息。

我写了以下代码:

    $("#thread").each(function(event) {
        if(event.target.class == 'tag') alert('yes');
    });

但它没有起作用。使用此代码,您可以使用event.target.id获取ID,但无法获取class?在event.target之后你可以拥有哪些值?

5个回答

25
if( $(event.target).hasClass("tag") )
{
   alert("yes");
}

这将很好地工作。


2
被接受的答案回答了特定的例子,但是这个答案回答了问题。 - RasTheDestroyer

16
起初,event参数仅适用于事件处理程序,并且您正在使用$.each方法。
我认为您可能不需要使用$.each方法,因为您正在使用#id选择器,而id应该是唯一的。
要检查元素是否包含特定类,请使用hasClass方法:
if ($("#thread").hasClass('tag')) {
  //...
}

如果你有一个DOM元素,要获取它的class属性,你应该使用className来访问它,而不是class,因为在JavaScript中class是一个未来保留字。同样的事情也发生在其他属性上,如for,应该使用htmlFor来访问...


3
我在哪里可以找到所有可用于event.target的属性? - ajsie
它说事件目标未定义? - ajsie
我使用 $(event.target).attr("class") 来获取被点击元素的类名,例如。如果你有编号的类名,你不需要为每个情况编写一个 case... - m3nda

1

您正在错误地使用jQuery的each方法。它需要两个参数,但其中没有一个是事件(它不会响应目标属性)。请参阅文档

$.each([52, 97], function(index, value) { 
  alert(index + ': ' + value); 
});

请参考CMS的答案,了解检查元素是否具有给定类名的正确方法。

0

给你。

$("div").each(function (index, domEle) {
    if (domEle.hasClass("tag")) {
        console.log('yes');
    } else {
        console.log('no');
    }
});

有没有办法在某些东西没有类的情况下计算小时?相反的呢? - user982853

0

只需在条件语句中使用:

!domEle.hasClass("tag")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接