我需要从点击文档的任何元素中获取$(' this')信息。
我尝试了以下代码:
$('body').click(function(){
var element = this.tagName; // or var element = $(this).prop('tagName');
alert(element);
});
问题是,无论我点击哪里,我只获得BODY元素。如果我点击按钮或div我想获得该元素。如何创建一些通用的东西来点击我点击的每个元素?
答案 0 :(得分:7)
因为您要将事件处理程序附加到body
元素,this
将始终是正文。相反,询问event.target
属性:
$('body').click(function(e){
var element = e.target.tagName;
alert(element);
});
答案 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上看起来性能稍好一些。