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就是事件对象。