我需要从我在文档上单击的任何元素中获取$('this')信息。
我尝试了以下代码:
$('body').click(function(){
var element = this.tagName; // or var element = $(this).prop('tagName');
alert(element);
});
字符串
问题是,无论我点击哪里,我都只能得到BODY元素。如果我点击一个按钮或一个div,我想得到那个元素。我如何创建一些通用的东西来获取我单击的每个元素?
我需要从我在文档上单击的任何元素中获取$('this')信息。
我尝试了以下代码:
$('body').click(function(){
var element = this.tagName; // or var element = $(this).prop('tagName');
alert(element);
});
字符串
问题是,无论我点击哪里,我都只能得到BODY元素。如果我点击一个按钮或一个div,我想得到那个元素。我如何创建一些通用的东西来获取我单击的每个元素?
3条答案
按热度按时间wfveoks01#
这个问题是因为您将事件处理程序附加到
body
元素,因此this
将始终是body
。相反,您应该询问事件的
target
属性,因为这将始终是对引发事件的Element对象的引用。个字符
i5desfxk2#
nodeName
字符串
http://quirksmode.org/dom/core/#t23
我的建议是根本不要使用tagName。nodeName包含tagName的所有功能,以及其他一些功能。因此,nodeName始终是更好的选择。
看起来在某些版本的Chrome和Firefox上性能也稍好一些。
http://jsperf.com/tagname-vs-nodename/2
iyfjxgzm3#
this
总是引用分配事件处理程序的元素,而不是事件起源的元素(当然,您可以更改它,但这样做很不寻常)。你需要Event.target
:字符串