Created by Jerry Wang, last modified on Oct 10, 2014

测试代码:
<html>
<script src="C:\Users\i042416\Desktop\jquery_1.7.1.js">
</script>
<script>
$(document).ready(function() {
 $("#test").click( function (){
 alert("four");
 //return false;
 });
});
function iamtwo(e) {
alert("two");
//stopBubble(e);
}
function iamthree(e) {
alert("three");
//stopBubbleDefault(e);
}
function stopBubble(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():( evt.cancelBubble = true );
}
function stopBubbleDefault(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():( evt.cancelBubble = true );
evt.preventDefault();
}
</script>
<body>
<div οnclick="alert('outermost');">Outermost
<div οnclick="alert('middle');"> middle
<div οnclick="alert('inner');">inner</div>
<div οnclick="iamtwo(event)">two</div>
<p><a href="http://www.baidu.com" οnclick="iamthree(event)">three </a></p>
<p id="test"><a href="http://www.baidu.com">four</a></p>
</div> <!-- end of middle !-->
</div> <!-- end of outermost !-->
</body>
</html>
UI上有6个元素:

点击Outermost: 弹出outermost字样的alert dialog
点击middle: 依次弹出middle,outermost的dialog
点击inner: 依次弹出inner, middle,outermost的dialog
点击two: 依次弹出two, middle,outermost的dialog
点击three: 依次弹出three, middle,outermost的dialog, 然后navigate到baidu webpage
点击four: 依次弹出four, middle,outermost的dialog, 然后navigate到baidu webpage
如果不希望two元素点击的event 冒泡到其parent hierarchy去,可将click handler iamtwo里的stopBubble行注释取消,之后点击就只会出现two dialog:

对于tag a 元素three,如果要阻止浏览器navigate到baidu website这一默认行为,需要调用event的preventDefault()方法:

如果是采用jQuery的click方法绑定的事件处理,只需在事件处理函数里返回false即可:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Javascript 事件propagation机制相关推荐

  1. JavaScript事件循环机制

    众所周知JS是一门单线程执行环境的语言,对于同步任务而言,同一时刻只能执行一个任务,后续的任务都要在当前执行的任务后面排队.这种模式在遇到一些执行时间较长的任务的时候就会出问题,会导致页面失去响应.所 ...

  2. 对JavaScript事件循环机制的理解

    前言: 这次主要整理一下自己对 Js事件循环机制,同步,异步任务,宏任务,微任务的理解,大概率暂时还有些偏差或者错误.如果有,十分欢迎各位纠正我的错误! 一.事件循环和任务队列产生的原因: 首先,JS ...

  3. 笔试题——JavaScript事件循环机制(event loop、macrotask、microtask)

    今天做了一道笔试题觉得很有意义分享给大家,题目如下: setTimeout(()=>{console.log('A'); },0); var obj={func:function () {set ...

  4. javascript事件循环机制EventLoop

    面试题:1到10 ,每隔一秒输出一个 自执行函数for (var i=1; i<=10; i++) {(function (i) {setTimeout(() => console.log ...

  5. javascript 事件对象

    btn.onclick = function (event) {// event 就是事件对象var e = event || window.event; // window.event是兼容低版本I ...

  6. 浏览器中的事件循环机制

    浏览器中的事件循环机制 网上一搜事件循环, 很多文章标题的前面会加上 JavaScript, 但是我觉得事件循环机制跟 JavaScript 没什么关系, JavaScript 只是一门解释型语言, ...

  7. JavaScript事件冒泡应用实例

    在一些传统的小型WEB应用开发过程中,JavaScript通常只是拿来做表单验证而以,所以你很少会遇到因为JavaScript事件冒泡而影响功能的实现情况,又或者事件冒泡对最终实现效果影响不大,可忽略 ...

  8. js事件循环机制(await-async-事件循环)

    await和async 异步函数 async function async关键字用于声明一个异步函数: async是asynchronous单词的缩写,异步.非同步: sync是synchronous ...

  9. 【探讨】javascript事件机制底层实现原理

    前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...

最新文章

  1. Magento购物车价格计算的功能实现之代码理解
  2. java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具
  3. html标签转换日期格式,input标签的type为date,显示的日期格式样式更改
  4. 我们做了一款无网远程运维的智能硬件,坐等运维工程师“翻牌”
  5. 图像语义分割(7)-PSPNet:金字塔型场景解析网络
  6. wdcp如何修改phpmyadmin导入 最大限制2048 KB
  7. PHP DDOS攻击的处理办法
  8. mysql支持ip访问
  9. 抖音矩阵源码短视频矩阵源码
  10. python批量png转ico
  11. CSS中button标签自带border属性
  12. 关闭windows自动更新N种方法
  13. 锐龙r7 4800U和i7-10710U 哪个好
  14. ensp报错AR40,无法修改IP地址解决办法。
  15. 用Python+HTML做的点名器
  16. 基于YOLOV3的安全帽检测
  17. AltiumDesigner
  18. 地缘剧本杀 (七):民意(原创小说连载,内含语音)
  19. 前置自增加++与后置自增加++区别,前后自减同理
  20. POJ2229 [USACO05 Jan] Sum sets 递推(dp)

热门文章

  1. linux虚拟机桥接网络配置
  2. css3 - 语言伪类选择器
  3. 7、ABPZero系列教程之拼多多卖家工具 修改注册功能
  4. shell文件管理jenkins构建过程---window环境下报错:找不到shell文件
  5. (转载)HTTP与RPC的区别
  6. C# 密封类sealed
  7. Linux下gcc编译器的使用
  8. 生产系统遇到的问题:producers blocked
  9. Silverlight 2 学习笔记之事件的重复绑定问题
  10. 文献记录(part31)--Dynamic relationship identification for abnormality detection on financial time ...