css代码如下:div{ width:500px; height:500px; backgrou" />
当前位置:首页 > 日记 > 正文

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

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

今天整理笔记,发现在学习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.将阻止事件冒泡的代码封装成了一个函数,可以多次调用。

好了,问题圆满解决。

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

相关文章

微信中的视频怎么下载下载微信视频

微信中的视频怎么下载下载微信视频

下载,方法,信中,视频,下载方法,  有时候在微信中遇到一些好玩的或者有趣的视频,想下载下来,那么如何操作呢?下面是小编为大家整编的下载微信视频的方法,大家快来看看吧。微信中的视频下载方法1、在微信中打开你想要下载的视频下载微信视频的…

Jquery EasyUI $.Parser

Jquery EasyUI $.Parser

电脑软件,Jquery,EasyUI,Parser,Parser(解析器)对象的属性和方法:使用:<link href="~/jquery-easyui-1.5.2/themes/bootstrap/easyui.css" rel="external nofollow" rel="stylesheet" /> <script src="~/jquery-easyui-1.5.2/jquery.mi…

浅谈js停止事件冒泡 阻止浏览器的

浅谈js停止事件冒泡 阻止浏览器的

默认,事件冒泡,浏览器,连接,浅谈,在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。1..停止事件冒泡JavaScript代码//如果提供了事件对象,则这是一个非IE浏览器if ( e && e.stopPropagation…

ps怎么画门面店铺图标? ps画简单店

ps怎么画门面店铺图标? ps画简单店

教程,图标,店铺,门面,简单,想要设计一个门前有遮阳棚的店铺,该怎么设计呢?下面我们就来看看详细的教程。软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、先用矩形工具绘制出一个长长的矩形,我们选择用深…

JavaScript 中的 this 简单规则

JavaScript 中的 this 简单规则

规则,简单,电脑软件,JavaScript,几条规则确定函数里的 this 是什么。想确定 this 是什么其实非常简单。总体的规则是,通过检查它的调用位置,在函数被调用的的时候确定 this。它遵循下面这些规则,接下来以优先级顺序说明。规则1、如果在调用函…

ps cs6怎么给照片添加阴影线效果?

ps cs6怎么给照片添加阴影线效果?

照片,效果,电脑软件,ps,一张数码照片制作成阴影线效果。软件名称:Photoshop CS6 13.0 破解版 中文绿色免费版 (PSCS6中文绿色版)软件大小:160MB更新时间:2014-05-151、启动软件,打开一张图片。 2、菜单栏依次选择&rdquo;图像&ldquo;&mdash;&mda…

Visual Studio for Mac版 初体验

Visual Studio for Mac版 初体验

初体验,电脑软件,Visual,Studio,Mac,你喜爱的 IDE,现在可用于 Mac。因为在 Visual Studio for Mac 之前,已经有了 Visual Studio Code for Mac,那时候我们还以为 Visual Studio Code 就是 Visual Studio 的跨平台版本,但事实微软并不是这样想的…

微信小程序 两种滑动方式(横向滑动,

微信小程序 两种滑动方式(横向滑动,

竖向,实例代码,横向滑动,两种,方式, 微信小程序 滑动方式竖向滑动:<scroll-view scroll-y="true" style="height: 200rpx;"><view style="background: red; width: 200px; height: 100px; display: inline-block" ></view><view style…

原生js封装添加class,删除class的

原生js封装添加class,删除class的

删除,封装,原生,实例,电脑软件,一、添加classfunction addClass(ele,cName) { var arr = ele.className.split(' ').concat(cName.split(" ")); for(var i=0;i<arr.length;i++){ for(var k=arr.length-1;k>i;k--){ (arr[k]==="")&…

PS怎么绘制一个杯子中的小狗?

PS怎么绘制一个杯子中的小狗?

绘制,杯子,小狗,电脑软件,PS,想要绘制一个把头从杯子中露出来的小狗,该怎么制作这个效果呢?下面我们就来看看详细的教程。软件名称:Adobe photoshop 7.01 官方正式简体中文版软件大小:154MB更新时间:2013-04-191、先用钢笔绘制出这个萌小狗的形…

wps电子表格怎样插入表头

wps电子表格怎样插入表头

表头,方法,电子表格,表格,电脑软件,  在Excel中制作表格,有很多情况下都需要制作画有斜线的表头,或许有些初学者的朋友不怎么懂插入表头。下面小编马上就告诉大家wps表格做表头的方法吧。wps表格做表头的方法wps表格做表头的步骤1:首先我们…

详解vue-router和vue-cli以及组件

详解vue-router和vue-cli以及组件

传值,组件,详解,电脑软件,cli,首先简单介绍使用vue-router的四个基本步骤:(为了方便演示,所有代码都写在一个文件里)1.定义组件2.定义路由3.创建router实例并将定义好的路由传入4.创建和挂载根实例再来说一下vue-cli一、安装vue-cli脚手架工具c…