e.stopPropagation()阻止事件冒泡

e.stopPropagation()阻止事件冒泡

html部分代码
<table border='1'>
    <tr>
        <td><span>冒泡事件测试</span></td>
        <td><span>冒泡事件测试2</span></td>
    </tr>
</table>

js部分代码


<script>
   $('table').on('click', function (e) {
      alert('table alert!');
   });
   $('tr').on('click',function(){
      alert('tr alert');
   });
   $('span').on('click',function(){
      alert("span alert!")
   });
</script>

执行代码我们会看到这样的执行顺序:span alert -> tr alert -> table alert。这就叫事件冒泡。就是从下往上,从里往外,事件依次触发。

有的时候我们不希望事件正常冒泡执行。
<script>
    $(function(){
        $('table').on('click','span',function(e){  //参数 e
            alert('span alert!'); //执行 ”span alert!“  弹出框
            e.stopPropagation();  // 阻止事件正常冒泡关键的一步!
        });
        $('table').on('click',function(){
            alert('table alert!');  // 该事件不会执行!
        });
    })
</script>

这样,点击span时,弹出"span alert!"对话框即结束,然后禁止事件冒泡,“table alert!”对话框即不会触发。

如果想获得事件相关信息,就要给匿名方法加一个e对象,e就是事件对象。

 

 

 

posted @ 2021-03-29 14:20  铁打的代码流水的bug  阅读(204)  评论(0编辑  收藏  举报