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());
});
});