javascript 单击时获取任意元素tagName

ecfdbz9o  于 2023-08-02  发布在  Java
关注(0)|答案(3)|浏览(91)

我需要从我在文档上单击的任何元素中获取$('this')信息。
我尝试了以下代码:

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

字符串
问题是,无论我点击哪里,我都只能得到BODY元素。如果我点击一个按钮或一个div,我想得到那个元素。我如何创建一些通用的东西来获取我单击的每个元素?

wfveoks0

wfveoks01#

这个问题是因为您将事件处理程序附加到body元素,因此this将始终是body
相反,您应该询问事件的target属性,因为这将始终是对引发事件的Element对象的引用。

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

个字符

i5desfxk

i5desfxk2#

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

iyfjxgzm

iyfjxgzm3#

this总是引用分配事件处理程序的元素,而不是事件起源的元素(当然,您可以更改它,但这样做很不寻常)。你需要Event.target

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

字符串

相关问题