首先,示例js代码:
$(function(){
$('body').click(function(){alert('body clicked');});
$('body').on('click','.post-header',function(e){
e.stopPropagation();
$(this).next('.post-content').slideToggle();
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div class="post-wrapper">
<h2 class="post-header">Lorem Ipsum</h2>
<div class="post-content">
<p>Lorem Ipsum is simply dummy text of....</p>
</div>
</div>
</body>
我的问题是,如果e.stopPropogation()杀死冒泡到身体,那么为什么click事件会触及body并触发处理程序来运行幻灯片代码呢?
答案 0 :(得分:0)
将this answer引用到之前的类似问题,结果表明,使用stopPropagation和委托均匀处理“通常”无用。在激活stopPropagation之前,事件已经传播到正文。
但是在上面的示例中,stopPropagation实际上可以防止附加到主体的其他单击事件处理程序。