如何只获取JQuery中单击的元素
如何只获取JQuery中单击的元素
假设如下
headding
link $("*").click(function(e){ e.preventDefault(); alert($(this)[0].tagName); });
我需要点击h1
警报显示h1
,点击警报显示等。
问题是当我点击任何元素时代码循环显示被点击元素的所有父元素的名称。 但我只需要第一个点击的元素。 任何帮助
使用stopPropagation()使事件不会冒泡
$("*").click(function(e){ e.preventDefault(); e.stopPropagation(); alert($(this)[0].tagName); });
小提琴
你需要在结尾处return false
以防止冒泡。
$("*").click(function (e) { e.preventDefault(); alert($(this)[0].tagName); return false; });
检查这个小提琴
你正在遇到事件传播。 该事件源自您单击的元素,但随后在DOM树中向上传播到根(文档)。 您可以使用stopPropagation
方法来阻止此操作,或者从事件处理函数return false
(以防止默认行为和停止传播):
$("*").click(function(e){ e.preventDefault(); e.stopPropagation(); alert(this.tagName); });
要么
$("*").click(function(e){ alert(this.tagName); return false; //both prevents default and stops propagation });
另外, $(this)[0]
是胡说八道。 你正在创建一个包含this
的类似数组的对象,然后将第一个元素( this
)退出,所以这是不必要的函数调用和数组访问,以获得你已经直接引用的东西。 零增益的纯开销,直接使用this
。
只需将jQuery选择器更改为仅将单击事件添加到h1
和a
:
$("h1,a").click(function(e){ e.preventDefault(); alert($(this)[0].tagName); });