在点击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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
基于jquery的让页面控件不可用的实现代码
Apr 27 Javascript
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
Jun 25 Javascript
javascript数字验证的实例代码(推荐)
Aug 20 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
JS实现简单的表格增删
Jan 16 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
原生JS封装vue Tab切换效果
Apr 28 Vue.js
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
PHP 选项及相关信息函数库
2006/12/04 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
暑期实践思想汇报
2014/01/06 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL