经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
jquery之冒泡事件介绍以及阻止冒泡
来源:cnblogs  作者:子钦加油  时间:2019/3/28 9:10:12  对本文有异议

什么是事件冒泡

  1. <div style="width: 200px;height: 200px;background: red;margin: 200px auto;" onclick="box()">
  2. <p onclick="test()" style="background: blue">
  3. wubin.pro <br>
  4. <span style="background: green" onclick="inner()">子钦博客</span>
  5. </p>
  6. </div>
  7. <script>
  8. function inner() {
  9. alert('inner');
  10. }
  11. function test() {
  12. alert('test')
  13. }
  14. function box() {
  15. alert('box')
  16. }
  17. </script>

布局结构如下图

 

一共单层元素

从外到里依次:div、p、span

每个元素都有单机事件

当单击div触发弹出box

当单击p标签时依次弹出:test、box

当单击span标签依次弹出:inner、test、box

这个即为事件冒泡

从最里层冒泡到最外层

 

如何阻止

很多时候我们不希望事件冒泡

也就是我点击p的时候只弹出test

点击span时候只弹出inner

1.event.stopPropagation()

  1. <body>
  2.     <div style="width: 200px;height: 200px;background: red;margin: 200px auto;" onclick="box()">
  3.         <p onclick="test()" style="background: blue">
  4.             wubin.pro <br>
  5.             <span style="background: green" onclick="inner(event)">武斌博客</span>
  6.         </p>
  7.     </div>
  8.     <script>
  9.         function inner() {
  10.             alert('inner');
  11.             event.stopPropagation();
  12.         }
  13.         function test() {
  14.             alert('test')
  15.         }
  16.         function box(event) {
  17.             alert('box')
  18.         }
  19.     </script>
  20. </body>

这个时候再点击子钦博客时

只是弹出inner    
2.return false

  

  1. <div style="width: 200px;height: 200px;background: red;margin: 200px auto;" >
  2.     <p  style="background: blue">
  3.         wubin.pro <br>
  4.         <span style="background: green" >武斌博客</span>
  5.     </p>
  6. </div>
  7. <script>
  8.     $(function () {
  9.         $('span').click(function(){
  10.             alert('inner');
  11.             return false;
  12.         })
  13.         $('p').click(function(){
  14.             alert('test');
  15.         })
  16.         $('div').click(function(){
  17.             alert('box');
  18.         })
  19.     })
  20. </script>

效果跟第一种相同

都可以阻止事件冒泡

 

return false与event.stopPropagation()区别

我们将以上代码修改为:

 

  1. <div style="width: 200px;height: 200px;background: red;margin: 200px auto;" >
  2.     <p  style="background: blue">
  3.         wubin.pro <br>
  4.         <a href="https://wubin.pro" style="background: green" >子钦博客</a>
  5.     </p>
  6. </div>
  7. <script>
  8.     $(function () {
  9.         $('a').click(function(event){
  10.             alert('inner');
  11.             // return false;
  12.             event.stopPropagation();
  13.         })
  14.         $('p').click(function(){
  15.             alert('test');
  16.         })
  17.         $('div').click(function(){
  18.             alert('box');
  19.         })
  20.     })
  21. </script> 

可以看出

当使用return false时

a标签的默认行(跳转页面)为也会被阻止

当使用event.stopPropagation()时

先弹出inner

然后页面跳转

 

总结

 

  1. <div style="width: 200px;height: 200px;background: red;margin: 200px auto;" >
  2.     <p  style="background: blue">
  3.         wubin.pro <br>
  4.         <a href="https://wubin.pro" style="background: green" >子钦博客</a>
  5.     </p>
  6. </div>
  7. <script>
  8.     $(function () {
  9.         $('a').click(function(event){
  10.             alert('inner');
  11.             // return false;
  12.             // event.stopPropagation();
  13.             event.preventDefault();
  14.         })
  15.         $('p').click(function(){
  16.             alert('test');
  17.         })
  18.         $('div').click(function(){
  19.             alert('box');
  20.         })
  21.     })
  22. </script>

return false:阻止事件冒泡和默认行为

event.stopPropagation():单独阻止事件冒泡

event.preventDefault():单独阻止默认行为

  

 

原文链接:http://www.cnblogs.com/zmdComeOn/p/10609271.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号