如何阻止事件冒泡

秒速五厘米 2022-11-19 07:42 307阅读 0赞

在页面开发中,我们使用JS添加事件后,默认情况事件会向上冒泡的。

  1. <body>
  2. <div class="parent">
  3. <input type="button" class="child" value="仙剑奇侠传" >
  4. </div>
  5. <script src="https://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
  6. <script type="text/javascript">
  7. $(".child").click(function(){
  8. console.log('李逍遥');
  9. });
  10. $(".parent").click(function(){
  11. console.log('赵灵儿');
  12. });
  13. </script>
  14. </body>

2021012714344155.png

要阻止事件冒泡很简单,两个方法:1、调用event.stopPropagation()方法就行了,其中event就是事件参数;2、return false

event.stopPropagation()

  1. <body>
  2. <div class="parent">
  3. <input type="button" class="child" value="仙剑奇侠传" >
  4. </div>
  5. <script src="https://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
  6. <script type="text/javascript">
  7. //阻止事件冒泡,但不会阻止默认行为
  8. $(".child").click(function(event){
  9. console.log('李逍遥');
  10. event.stopPropagation();
  11. });
  12. $(".parent").click(function(){
  13. console.log('赵灵儿');
  14. });
  15. </script>
  16. </body>

20210127143834258.png

这样我们这里点击按钮后,就不会触发div的事件了,就是说事件没有冒泡到div层了。

return false

  1. <body>
  2. <div class="parent">
  3. <a href="https://www.baidu.com" class="child">仙剑奇侠传</a>
  4. </div>
  5. <script src="https://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
  6. <script type="text/javascript">
  7. //阻止事件冒泡,也阻止默认行为
  8. $(".child").click(function(event){
  9. console.log('李逍遥');
  10. return false;
  11. });
  12. $(".parent").click(function(){
  13. console.log('赵灵儿');
  14. });
  15. </script>
  16. </body>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgwNDQ5Ng_size_16_color_FFFFFF_t_70

event.preventDefault()

  1. <body>
  2. <div class="parent">
  3. <a href="https://www.baidu.com" class="child">仙剑奇侠传</a>
  4. </div>
  5. <script src="https://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
  6. <script type="text/javascript">
  7. //不阻止事件冒泡,但阻止默认行为
  8. $(".child").click(function(event){
  9. console.log('李逍遥');
  10. event.preventDefault();
  11. });
  12. $(".parent").click(function(){
  13. console.log('赵灵儿');
  14. });
  15. </script>
  16. </body>

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgwNDQ5Ng_size_16_color_FFFFFF_t_70 1

总结:

1.event.stopPropagation();
事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(执行超链接的跳转)
2.return false;
事件处理过程中,阻止了事件冒泡,也阻止了默认行为(不执行超链接的跳转)
还有一种与冒泡有关的:
3.event.preventDefault();
事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读

    相关 阻止事件冒泡

    事件的冒泡(Bubble) \- 所谓的冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发 \- 在开发中大部分情况冒泡都是有用的,如果