JS阻止事件冒泡的方法详解


Posted in Javascript onAugust 26, 2019
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx.cs"Inherits="Default5"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Porschev---Jquery 事件冒泡</title>

<script src="jquery-1.3.2-vsdoc.js" type="text/javascript"></script>

</head>
<body>
<form id="form1" runat="server">


<div id="divOne" onclick="alert('我是最外层');">



<div id="divTwo" onclick="alert('我是中间层!')">




<a id="hr_three" href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" mce_href="http://www.baidu.com" rel="external nofollow" rel="external nofollow" onclick="alert('我是最里层!')">点击我</a>



</div>


</div>

</form>
</body>
</html>

比如上面这个页面,

分为三层:divOne是第外层,divTwo中间层,hr_three是最里层;

他们都有各自的click事件,最里层a标签还有href属性。

运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层

---->然后再链接到百度.

这就是事件冒泡,本来我只点击ID为hr_three的标签,但是确执行了三个alert操作。

事件冒泡过程(以标签ID表示):hr_three----> divTwo----> divOne 。从最里层冒泡到最外层。

如何来阻止?

1.event.stopPropagation();

<script type="text/javascript">
    $(function() {
      $("#hr_three").click(function(event) {
        event.stopPropagation();
      });
    });
<script>

再点击“点击我”,会弹出:我是最里层,然后链接到百度

2.return false;

如果头部加入的是以下代码

<script type="text/javascript">
$(function() {
$("#hr_three").click(function(event) {


return false;

});
});
<script>

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

由此可以看出:

1.event.stopPropagation();

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

2.return false;

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

还有一种有冒泡有关的:

3.event.preventDefault();

如果把它放在头部A标签的click事件中,点击“点击我”。

会发现它依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度

它的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Javascript 相关文章推荐
一个可以兼容IE FF的加为首页与加入收藏实现代码
Nov 02 Javascript
js 操作select和option常用代码整理
Dec 13 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
Apr 29 Javascript
JavaScript获取元素尺寸和大小操作总结
Feb 27 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
Jul 22 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
Sep 19 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
Vue filter介绍及详细使用
Apr 04 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
ssm+vue前后端分离框架整合实现(附源码)
Jul 08 Javascript
express框架中使用jwt实现验证的方法
Aug 25 #Javascript
JS异步处理的进化史深入讲解
Aug 25 #Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 #Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 #Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 #Javascript
angularjs自定义过滤器demo示例
Aug 24 #Javascript
Jquery实现获取子元素的方法分析
Aug 24 #jQuery
You might like
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jquery属性,遍历,HTML操作方法详解
2016/09/17 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
jquery登录的异步验证操作示例
2019/05/09 jQuery
原生js实现分页效果
2020/09/23 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python比较2个时间大小的实现方法
2018/04/10 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
Oracle性能调优原则
2012/05/03 面试题
主管职责范文
2013/11/09 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python
Golang 并发编程 SingleFlight模式
2022/04/26 Golang
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android