我有以下代码:
<script type="text/javascript">
$("*").click(function(event){
var x = event.target;
if (x.nodeName == "DIV"){
alert(x.attr("class"));
}
})
</script>
这会抛出一个'undefined'异常......有没有其他方法来获取触发'click'事件的元素类?提前谢谢!
答案 0 :(得分:13)
event.target
是一个DOM对象。因此,要使用jQuery方法,必须将其转换为jQuery对象:
alert($(x).attr("class"));
否则,您可以使用属性className
来获取元素的类:
alert(x.className);
顺便说一下,在您的示例中,您只需使用this
关键字而不是event.target
。
答案 1 :(得分:4)
jQuery提供一些语法糖来帮助您进行检查 - .is()
允许您针对任何其他有效选择器验证元素:
var $target = event.target;
if ($target.is('div')){
alert($target.attr('class'));
}
还有一些需要考虑的进一步变化:
.click(handler)
被明确分配给匹配的元素(在您的情况下为每个元素)。这增加了开销;此处理程序也不会应用于执行处理程序分配后动态添加的任何元素。相反,使用on()
$('div')
this
,这几乎就是惯例在所有这些更改之后,代码变得更小,更具可读性:
$('div').on('click', function() {
alert($(this).attr('class'));
});