Javascript 需要从单击的任何元素获取信息,但不需要从父元素获取信息

Javascript 需要从单击的任何元素获取信息,但不需要从父元素获取信息,javascript,jquery,html,Javascript,Jquery,Html,需要从单击的任何元素获取信息 例如: <div>text1<section>text2</section></div> 如果我单击text2,父元素也会抛出警报。我只需要第一个警报。如何阻止来自节的所有父元素的下一个警报。使用event.stopPropagation()防止事件在包含的元素上触发 $(function(){ $('body *').click(function(e){ e.stopPropagation();

需要从单击的任何元素获取信息

例如:

<div>text1<section>text2</section></div>

如果我单击text2,父元素也会抛出警报。我只需要第一个警报。如何阻止来自节的所有父元素的下一个警报。

使用
event.stopPropagation()
防止事件在包含的元素上触发

$(function(){
  $('body *').click(function(e){
    e.stopPropagation();
    alert($(this).get(0).tagName.toLowerCase());
  });
});

只想在Kooilnc answer上进行扩展-将
on
事件委派一起使用是另一种选择

如果您在需要侦听冒泡的单击处理程序的节点上绑定了事件侦听器,那么事件委派将非常好。如果您停止播放,这显然是一个问题

这里是一个演示小提琴:

假设您的一个好友将事件侦听器绑定到DOM树中较高的节点。他希望任何冒泡的事件都能由他的剧本来处理

使用
事件委派
,事件仍会冒泡(因此您的好友代码仍会触发),但它只会发出一次警报(因为我们称之为
e.stopPropagation

上调用,而不进行事件委派,或者直接使用单击(在引擎盖下,它只是在上调用)绑定事件,将防止事件冒泡,因此您的好友代码将永远不会运行

$(function(){
  $('body *').click(function(e){
    e.stopPropagation();
    alert($(this).get(0).tagName.toLowerCase());
  });
});