停止传播困境?
stopPropagation dilemma?
一、示例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() 终止了对 body 的冒泡,那么点击事件如何击中 body 并触发处理程序到 运行 幻灯片代码?
参考this answer之前的一个类似问题,结果发现'generally'使用stopPropagation with delegated even handling是没用的。在激活 stopPropagation 之前,事件已经传播到 body。
但在上面的示例中,stopPropagation 实际上可以防止其他点击事件处理程序附加到正文。
一、示例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() 终止了对 body 的冒泡,那么点击事件如何击中 body 并触发处理程序到 运行 幻灯片代码?
参考this answer之前的一个类似问题,结果发现'generally'使用stopPropagation with delegated even handling是没用的。在激活 stopPropagation 之前,事件已经传播到 body。
但在上面的示例中,stopPropagation 实际上可以防止其他点击事件处理程序附加到正文。