Javascript中的事件冒泡
这是一个基础性的文章,使用Javascript观察DOM中的事件冒泡机制,并介绍如何阻止默认行为和如何组织事件冒泡的方法。
1. 第一个例子可以在Firefox下运行
<div id="container2" onclick="alert('click container2');">
<a href="http://www.google.com" target="_blank" onclick="fn1(event);">Google</a>
<a href="http://www.google.com" target="_blank" onclick="fn2(event);">Google</a>
<a href="http://www.google.com" target="_blank" onclick="fn3(event);">Google</a>
<a href="http://www.google.com" target="_blank" onclick="fn4(event);">Google</a>
</div>
</div>
alert('click google');
}
function fn2(event) {
alert('click google');
event.preventDefault();
}
function fn3(event) {
alert('click google');
event.stopPropagation();
}
function fn4(event) {
alert('click google');
event.preventDefault();
event.stopPropagation();
}
点击第一个链接,alert_google -> alert_container2 -> alert_container1 -> open_google_page
点击第二个链接,alert_google -> alert_container2 -> alert_container1
点击第三个链接,alert_google -> open_google_page
点击第四个链接,alert_google
可以看到,事件冒泡是从最初引发事件的HTML节点开始,一步步向上引发父节点的相同事件。
在Firefox中,我们可以通过 preventDefault 函数阻止默认的行为(比如这个例子中,点击链接的默认行为是打开链接地址)
通过 stopPropagation 函数阻止事件冒泡。
相同的过程在IE下的实现有点不同,一是事件对象(event)在IE下是作为 window 对象的一个属性,
二是阻止事件的默认行为或阻止事件冒泡的做法也有所不同,请看:
2. 观察IE下的事件冒泡
<div id="container2_ie" onclick="alert('click container2');">
<a href="http://www.google.com" target="_blank" onclick="fn1_ie();">Google</a> <a
href="http://www.google.com" target="_blank" onclick="fn2_ie();">Google</a>
<a href="http://www.google.com" target="_blank" onclick="fn3_ie();">Google</a> <a
href="http://www.google.com" target="_blank" onclick="fn4_ie();">Google</a>
</div>
</div>
alert('click google');
}
function fn2_ie() {
alert('click google');
event.returnValue = false;
}
function fn3_ie() {
alert('click google');
event.cancelBubble = true;
}
function fn4_ie() {
alert('click google');
event.returnValue = false;
event.cancelBubble = true;
}
点击第一个链接,alert_google -> alert_container2 -> alert_container1 -> open_google_page
点击第二个链接,alert_google -> alert_container2 -> alert_container1
点击第三个链接,alert_google -> open_google_page
点击第四个链接,alert_google
代码下载
转载于:https://www.cnblogs.com/sanshi/archive/2009/02/18/1393165.html
Javascript中的事件冒泡相关推荐
- javascript中的事件冒泡、事件捕获和事件执行顺序
谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有 ...
- 【前端学习】前端学习第十五天:JavaScript中的事件模型
在各种浏览器中存在三种事件模型:原始事件模型.DOM事件模型和IE事件模型: 一.原始事件模型: 原始事件模型被所有浏览器支持: 在原始事件模型中.事件一旦发生就直接调用事件处理函数,事件不会向别的对 ...
- jQuery 中的事件冒泡和阻止默认行为
jQuery 中的事件冒泡和阻止默认行为 参考资料: <锋利的jQuery> 作者:单东林 张晓菲 魏然 出版社: 人民邮电出版社 1.事件冒泡 [javascript] vi ...
- 12.在JavaScript中的事件模型如何理解?
一.事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件.鼠标事件.自定义事件等 由于DOM是一个树结构,如果在 ...
- 浅谈JavaScript中的事件
事件在javascript中是响应用户的一种基本操作,本文列举了两种javascript中的事件模型及其绑定的方式,希望能对你的学习带来一点帮助.这些都是非常基础的但或许其中有你所遗漏.(以下事件均针 ...
- JavaScript学习笔记06【高级——JavaScript中的事件】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
- java基础66 JavaScript中的事件、localtion对象、screen对象(网页知识)
1.JavaScript中的事件注册 1.1.事件的注册方式 方式1:直接在html元素上注册<body onLoad="ready()"></body > ...
- jQuery中的事件冒泡捕获阻止冒泡
jQuery中的事件冒泡捕获阻止冒泡 事件冒泡 IE中的事件流叫做事件冒泡,就是又最开始的时间接收到逐级向上传播较为不具体的节点.IE9.谷歌浏览器.Safari.Opera等等都是将事件一直冒泡到w ...
- Javascript中的事件捕获、事件冒泡与事件委托
看以下简单的三层div结构. <div id="grandparent"><div id="parent"><div id=&qu ...
最新文章
- php esi技术,Php环境搭建 – 巴黎高等计算机学院(ESI-SUPINFO)中国校区技术博客...
- iOS 最新版 CocoaPods 的安装流程
- 中国机器人产业发展报告(2018)正式发布!
- FREE 开源 API 管理工具等
- JavaScript实现combine Without Repetitions不重复地结合算法(附完整源码)
- 网站被黑的原因真实案例
- Golang实践录:调用C++函数的优化
- Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源代码)
- 无法卸载 Mac 上的磁盘时该怎么办?
- 压力换算公斤单位换算_压力与重量换算(公斤换算压力)
- ElementUI Select选择器下拉框样式修改
- 在集体奋斗中实现自己的价值
- 《安全评估报告》7条回答范例
- 计算机网络实验:CISCO IOS 路由器基本配置
- 41首送别诗词,首首经典,值得为孩子们收藏!
- Ubuntu18.04美化主题(mac主题)
- 国学经典大全android,国学经典大全
- Nyquist三大准则
- Bootstrap的基本使用方法,5分钟帮你搞懂怎么用
- 2013年节假日安排公布 春节假期2月9日至15日
热门文章
- (连续子序列)唯一的雪花
- java里面如何加入高级的东西_如何成为一名Java高级架构师
- mysql 及时点还原_mysqlbinglog基于即时点还原
- 基于Java+SpringBoot+vue+node.js的图书购物商城系统详细设计和实现
- mysql搜索引擎_常见的 mysql 搜索引擎
- c语言字符串传给swift,如何把字符串数组从 Swift 传递给 C
- linux图形界面为英文,Linux下“英文控制台 中文图形界面”的实现
- android分辨率px跟dp,Android屏幕适配 px,dp,dpi及density的关系与深入理解
- Java 栈的存储过程
- UFLDL之Softmax回归