如果我有一个浮动消息框,我想知道是否在该框中单击段落文本也会在jQuery中注册点击它的父元素,或者如果我必须为子元素添加点击监听器.
更新:这是基本布局:
<div id='msgbox'>
<p>This is the <span>message</span></p>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,如果我单击<p>或在<span>遗嘱中的文本,它仍然会触发点击$('#msgbox')?
更新2:我可以停止这种行为吗?
更新3:这是我要走的小提琴:http://jsfiddle.net/MZtbY/ - 现在是否有办法在达到一定水平后停止传播?所以点击它<p>会没问题,但点击它<span>会什么都不做? - 有点像$('#msgbox :nth-child').click(function(e) {e.stopPropagation();});
$('#msgbox').click(function(evt){
alert("click on msgbox: "+evt.target);
});
// stop bubbling for the span only.
$('#msgbox span').click(function(evt) {
evt.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)
请注意,单击#msgbox <div>(这是jsFiddle 中的红色框)或段落文本的第一部分都将触发#msgbox上的事件处理程序; 但点击里面的文字<span>不会.这是因为我们已经将一个处理程序直接应用于span,并调用stopPropagation()该事件以防止正常的冒泡操作.
更新:这里是你的小提琴的更新,显示相同的事情.