• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > 在点击div中的p时,如何阻止事件冒泡

在点击div中的p时,如何阻止事件冒泡

作者:九九smile 字体:[增加 减小] 来源:互联网 时间:2017-05-11

九九smile通过本文主要向大家介绍了div点击事件,jquery div点击事件,js div点击事件,给div添加点击事件,div添加点击事件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

今天整理笔记,发现在学习javaScript的过程中,遇到过一个在当时看来很棘手的问题,现在特地总结一下,也希望能帮助到曾像我一样迷惘的初学者。

我还是以一个案例来说明问题,html代码如下:

 <div onclick="show('a')">
   <p onclick="show('b')"></p>
 </div>
</div>

css代码如下:

div{
  width:500px;
  height:500px;
  background:red;
 }
 p{
  width:200px;
  height:200px;
  background:blue;
 }
</div>

js代码如下:

 function show(info){
    alert(info);
 }
</div>

稍微懂点js的人都知道当我点击p时,基于事件冒泡机制,会触发父元素div的onclick事件,结果是先弹出b、再弹出a。

那么问题来了,如何修改show()这个函数而只弹出b?我第一次的解决方法是(各位大神勿喷):

function show(e,info){
 function cancelBubble(e){
  e = e || window.event;
  if (e.stopPropagation) {  
     e.stopPropagation(); 
  }else {   
     e.cancelBubble = true; 
  } 
 }
 alert(info);
}
</div>

结果老是报错。我就开始各种百度,最终解决方法如下:

function show(info){
   alert(info);
   cancelBubble();
}
function cancelBubble(e) { 
   var evt = e ? e : window.event; 
    if (evt.stopPropagation) {  //W3C 
     evt.stopPropagation(); 
    }else {  //IE  
     evt.cancelBubble = true; 
    } 
}
</div>

至于为什么这样?我分析的是这样做有两个好处:1.阻止了事件冒泡,达到只弹出b目的; 2.将阻止事件冒泡的代码封装成了一个函数,可以多次调用。

好了,问题圆满解决。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 在点击div中的p时,如何阻止事件冒泡

相关文章

  • 2017-05-11微信小程序 仿美团分类菜单 swiper分类菜单
  • 2017-05-11div中文字内容溢出常见的解决方法
  • 2017-08-26前端Js框架汇总
  • 2017-05-11JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
  • 2017-05-11关于axios返回空对象的问题解决
  • 2017-05-11JS ES6多行字符串与连接字符串的表示方法
  • 2017-05-11javascript中json基础知识详解
  • 2017-05-11简单谈谈gulp-changed插件
  • 2017-05-11原生JS实现圣旨卷轴展开效果
  • 2017-05-11jQuery层级选择器实例代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅谈angularjs $http提交数据探索
    • canvas绘制表盘时钟
    • vue.js利用Object.defineProperty实现双向绑定
    • 详谈jQuery Ajax(load,post,get,ajax)的用法
    • jquery实现自适应banner焦点图
    • 浅谈js for循环输出i为同一值的问题
    • JS简单获取当前日期和农历日期的方法
    • 微信小程序 image组件binderror使用例子与js中的onerror区别
    • AngularJS 霸道的过滤器小结
    • 手机端js和html5刮刮卡效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有