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


Posted in Javascript onFebruary 07, 2017

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

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

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

css代码如下:

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

js代码如下:

function show(info){
    alert(info);
 }

稍微懂点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);
}

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

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; 
    } 
}

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

好了,问题圆满解决。

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

Javascript 相关文章推荐
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
Jan 24 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
浅析javascript函数表达式
Feb 10 Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
JS给Array添加是否包含字符串的简单方法
Oct 29 Javascript
jQuery选择器实例应用
Jan 05 Javascript
使用vue-router切换页面时实现设置过渡动画
Oct 31 Javascript
js闭包的9个使用场景
Dec 29 Javascript
bootstrap vue.js实现tab效果
Feb 07 #Javascript
Node连接mysql数据库方法介绍
Feb 07 #Javascript
jQuery监听浏览器窗口大小的变化实例
Feb 07 #Javascript
Bootstrap table表格简单操作
Feb 07 #Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 #Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
Feb 07 #Javascript
jquery 判断是否支持Placeholder属性的方法
Feb 07 #Javascript
You might like
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
python多线程使用方法实例详解
2019/12/30 Python
python ETL工具 pyetl
2020/06/07 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
残疾人创业典型事迹
2014/02/01 职场文书
2014春晚主持词
2014/03/25 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
行政上诉状范文
2015/05/23 职场文书
工作证明书
2015/06/15 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Python - 10行代码集2000张美女图
2021/05/23 Python
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript