单击时获取任何元素tagName

时间:2014-05-24 12:56:52

标签: javascript jquery

我需要从点击文档的任何元素中获取$(' this')信息。

我尝试了以下代码:

$('body').click(function(){
    var element = this.tagName; // or var element = $(this).prop('tagName');
    alert(element);
});

问题是,无论我点击哪里,我只获得BODY元素。如果我点击按钮或div我想获得该元素。如何创建一些通用的东西来点击我点击的每个元素?

3 个答案:

答案 0 :(得分:7)

因为您要将事件处理程序附加到body元素,this将始终是正文。相反,询问event.target属性:

$('body').click(function(e){
    var element = e.target.tagName;
    alert(element);
});

Example fiddle

答案 1 :(得分:1)

this始终引用分配事件处理程序的元素,而不是引发事件的位置(嗯,您可以更改它,但这样做非常不寻常)。为此,您需要Event.target

$('body').click(function(event){
    var element = event.target.tagName; // or var element = $(this).prop('tagName');
    alert(element);
});

答案 2 :(得分:1)

<强>节点名称

$('body').click(function(e){
 alert(e.target.nodeName);
});

http://quirksmode.org/dom/core/#t23

  

我的建议是根本不使用tagName。 nodeName包含所有   tagName的功能,再加上一些。因此nodeName是   总是更好的选择。

在某些版本的chrome和firefox上看起来性能稍好一些。

http://jsperf.com/tagname-vs-nodename/2