微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子元素在jquery中使用父元素注册click事件吗?

参见英文答案 > jquery stop child triggering parent event8个
如果我有一个浮动消息框,我想知道是否在该框中单击段落文本也会在jQuery中注册点击它的父元素,或者如果我必须为子元素添加点击监听器.

更新:这是基本布局:

<div id='msgBox'>
<p>This is the <span>message</span></p>
</div>

现在,如果我点击< p>中的文字或者在< span>点击$(‘#msgBox’)会触发吗?

更新2:我可以停止这种行为吗?

更新3:这是我要走的小提琴:http://jsfiddle.net/MZtbY/ – 现在有没有办法在达到一定水平后停止传播?所以点击< p>没关系,但点击< span>什么都不做? – 有点像$(‘#msgBox:nth-​​child’).click(function(e){e.stopPropagation();});

解决方法

Here’s an example at jsFiddle
$('#msgBox').click(function(evt){ 
   alert("click on msgBox: "+evt.target); 
});

// stop bubbling for the span only.
$('#msgBox span').click(function(evt) { 
   evt.stopPropagation(); 
});

请注意,点击#msgBox< div> (这是jsfiddle中的红色框),或者段落文本的第一部分都将触发#msgBox上的事件处理程序;但点击< span>内的文字将不会.这是因为我们已经将一个处理程序直接应用于span,并在该事件上调用stopPropagation()以防止正常的冒泡操作.

更新:here’s an update to your fiddle显示相同的事情.

原文地址:https://www.jb51.cc/jquery/241587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐