一. 什么是事件的冒泡:

     在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件就会向这个对象的父级对象传播,从里到外,直到它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些对象是window)。

二.如何阻止冒泡:

例子:

<body>
<form>
<div onclick="alert('我是最外层');">
<div onclick="alert('我是中间层!');">
<a href="#" onclick="alert('我是最里层!');">点击我</a>
</div>
</div>
</form>
</body>

比如上面这个页面, 
分为三层:divOne是第外层,divTwo中间层,hr_three是最里层; 
他们都有各自的click事件,最里层a标签还有href属性。 
运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层---->然后再链接到百度. 
这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作。 
事件冒泡过程(以标签ID表示):hr_three---->divTwo---->divOne。从最里层冒泡到最外层。

如何来阻止?

1.event.stopPropagation()

<body>
<form>
<div onclick="alert('我是最外层');">
<div onclick="alert('我是中间层!');">
<a href="https://www.baidu.com/" onclick="alert('我是最里层!');" id="hr_three">点击我</a>
</div>
</div>
</form>
<script>
$(function() {
$("#hr_three").click(function(event) {
event.stopPropagation();
});
});
</script>
</body>

这次再点击“点击我”,会弹出“我是最里层”;再会跳转到百度链接

2. return false

<body>
<form>
<div onclick="alert('我是最外层');">
<div onclick="alert('我是中间层!');">
<a href="https://www.baidu.com/" onclick="alert('我是最里层!');" id="hr_three">点击我</a>
</div>
</div>
</form>
<script>
$(function() {
$("#hr_three").click(function(event) {
return false;
});
});
</script>
</body>

再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面

由此可以看出

1.event.stopPropagation(); 
事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转)

2.returnfalse; 
事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转)

还有一种有冒泡有关的:

3.event.preventDefault(); 
如果把它放在头部A标签的click事件中,点击“点击我”。 
会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度 
它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

js 事件冒泡的更多相关文章

  1. 什么是JS事件冒泡?

    什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理 程序或者事件返回true,那么 ...

  2. js事件冒泡和事件委托

    js事件冒泡 js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: <ul class="clearfix" data-type=&q ...

  3. 什么是JS事件冒泡

    什么是JS事件冒泡? 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个 ...

  4. 阻止JS事件冒泡传递(cancelBubble 、stopPropagation)

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  5. js事件冒泡和捕捉

    (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div ...

  6. 这可能是最简明扼要的 js事件冒泡机制+阻止默认事件 讲解了

    哎 js事件冒泡机制和阻止冒泡 阻止默认行为好像永远也整不清楚,记了忘 忘了记...醉了 这篇文章写完以后下次再忘记 就呼自己一巴掌,忘一次一巴掌 首先要明白两个概念——事件和事件流 事件指的是用户或 ...

  7. 理解js事件冒泡事件委托事件捕获

    js事件冒泡 javascript的事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止,这就是事件冒泡现象. <di ...

  8. js 事件冒泡、事件捕获、stopPropagation、preventDefault

    转自:http://www.jb51.net/article/42492.htm (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: ...

  9. JS事件冒泡及阻止

    事件冒泡及阻止 当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表 ...

  10. 关于JS 事件冒泡和onclick,click,on()事件触发顺序

    今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...

随机推荐

  1. 【65测试20161114】【字符串】【DP】

    第一题 复制&粘贴: 文件的内容是一个字符串S,对其进行N次复制&粘贴的操作,第i次操作复制位置Ai和位置Bi之间的所有文字,然后在位置Ci粘贴.这里位置x表示字符串的第x个字符的后面 ...

  2. js初学者的div移动

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  3. sql 2008 修改链接服务器 Rpc &Rpc Out

    From: http://blog.csdn.net/gnolhh168/article/details/41725873 USE [master] GO EXEC master.dbo.sp_ser ...

  4. Struts2配置文件详解

    解决在断网环境下,配置文件无提示的问题我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为” http://struts.apache.org/d ...

  5. vue.js2.0的独立构建和运行时构建

    转自:https://jingsam.github.io/2016/10/23/standalone-vs-runtime-only-build-in-vuejs2.html?utm_source=t ...

  6. MindManager使用说明

    MindManager是一款很好实现思维导图的软件,唯一有些遗憾的是它并不是免费的,而且价格还不菲. 初识MindManager 正确安装好MindManager之后,打开软件,会发现MindMana ...

  7. JAVA第二次作业展示与学习心得

    JAVA第二次作业展示与学习心得 在这一次作业中,我学习了复选框,密码框两种新的组件,并通过一个邮箱登录界面将两种组件运用了起来.具体的使用方法和其他得组件并没有什么大的不同. 另外我通过查阅资料使用 ...

  8. 对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决

    在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目:主要 是里面的Structs 1.3 (structs 2)和 ...

  9. JAVA抽象类与接口的详细解读与示例

    接口存在的原因: JAVA是单继承的,不支持多继承,但是有了接口,JAVA可以实现多个接口: 一个类要是实现某一个接口就必须实现接口内声明的所有方法(强迫执行,即便是空方法,也要实现): 接口特点: ...

  10. EntityFrameWork使用过程问题总结

    1.记录上次遇到个一个问题. (1).vs2013中的EntityFramework不能识别odp11,所以在用ef的时候 ,要换vs2012 (2).opd12不能识别Oracle  9i(所以这个 ...