我需要从我点击文档的任何元素中获取$('this')信息。
我尝试了以下代码:
$('body').click(function(){
var element = this.tagName; // or var element = $(this).prop('tagName');
alert(element);
});问题是,在我点击的任何地方,我只得到了BODY元素。如果我点击一个按钮或div,我想得到那个元素。我怎样才能创建一些通用的东西来获取我单击的每个元素?
发布于 2014-05-24 12:58:26
因为要将事件处理程序附加到body元素,所以this始终是主体。相反,询问event.target属性:
$('body').click(function(e){
var element = e.target.tagName;
alert(element);
});Example fiddle
发布于 2014-05-24 13:35:33
nodeName
$('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
发布于 2014-05-24 12:58:29
this总是引用事件处理程序被分配的元素,而不是事件起源的地方(当然,您可以更改它,但是这样做是非常不寻常的)。为此,您需要Event.target
$('body').click(function(event){
var element = event.target.tagName; // or var element = $(this).prop('tagName');
alert(element);
});https://stackoverflow.com/questions/23845294
复制相似问题