停止传播困境?

时间:2016-02-12 14:03:37

标签: capture 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()杀死冒泡到身体,那么为什么click事件会触及body并触发处理程序来运行幻灯片代码呢?

1 个答案:

答案 0 :(得分:0)

this answer引用到之前的类似问题,结果表明,使用stopPropagation和委托均匀处理“通常”无用。在激活stopPropagation之前,事件已经传播到正文。

但是在上面的示例中,stopPropagation实际上可以防止附加到主体的其他单击事件处理程序。