取消事件冒泡,在 IE 的事件机制中,触发事件会从子元素向父元素逐级上传,就是说,如果子元素触发了单击事件,那么也会触发父元素的单击事件;event.cancelBubble=true;可以停止事件继续上传补充一点,Ie的事件传递是从下到上的:
事件来源对象->上级对象->上上级对象->.....->body->document->window
NS的事件传递是从上到下:
window->document->body->....->事件来源对象实例源码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>event.cancelBubble</title>
<style>
<!--
* {font:menu}
-->
</style>
</head>
<body>
<span onclick=alert("你好")>点我 <span>再点我</span></span><br><br>
<span onclick=alert("你好")>点我 <span onclick=event.cancelBubble=true;>再点我</span></span>
</body>
</html>
实例2:
<!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" lang="zh" xml:lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="developer" content="Realazy" />
<title>Bubble in JavaScript DOM--JavaScript 的事件冒泡 demo </title>
<style type="text/css" media="screen">
div * {display:block; margin:4px; padding:4px; border:1px solid white;}
textarea {width:20em; height:2em;}
</style>
<script type="text/javascript">
//<![CDATA[
function init(){
var log = document.getElementsByTagName('textarea')[0];
var all = document.getElementsByTagName('div')[0].getElementsByTagName('*');
for (var i = 0, n = all.length; i < n; ++i){
all[i].onmouseover = function(e){
this.style.border = '1px solid red';
log.value = '鼠标现在进入的是: ' + this.nodeName;
};
all[i].onmouseout = function(e){
this.style.border = '1px solid white';
};
}
var all2 = document.getElementsByTagName('div')[1].getElementsByTagName('*');
for (var i = 0, n = all2.length; i < n; ++i){
all2[i].onmouseover = function(e){
this.style.border = '1px solid red';
if (e) //停止事件冒泡
e.stopPropagation();
else
window.event.cancelBubble = true;
log.value = '鼠标现在进入的是: ' + this.nodeName;
};
all2[i].onmouseout = function(e){
this.style.border = '1px solid white';};
}
}
window.onload = init;
//]]>
</script>
</head>
<body>
<h1>Bubble in JavaScript DOM</h1>
<p>DOM树的结构是:</p>
<pre><code>
UL
- LI
- A
- SPAN
</code></pre>
<div>
<ul>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
</ul>
</div>
<textarea></textarea>
<p>鼠标进入UL的任何一个子元素,如果不停止冒泡,我们从UL到SPAN都定义了鼠标悬停(<code>mouseover</code>)事件,这个事件会上升了UL,从而从鼠标所进入的元素到UL元素都会有红色的边。</p>
<div>
<ul>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
</ul>
</div>
<p>如果停止冒泡,事件不会上升,我们就可以获取精确的鼠标进入元素。</p>
</body>
分享到:
- 2008-05-01 16:54
- 浏览 1273
- 评论(0)
- 论坛回复 / 浏览 (0 / 6064)
- 查看更多
相关推荐
cancelBubble在IE下有效 stopPropagation在Firefox下有效 代码如下:<!DOCTYPE html PUBLIC “-//W3C//DTD... <head> <title> 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)<
这样,无论在IE还是其他遵循W3C标准的浏览器中,都可以有效地阻止事件冒泡。 了解事件冒泡和事件捕捉对于创建高效、可维护的Web应用至关重要。正确处理事件不仅可以提升用户体验,还能避免不必要的计算和资源浪费。...
LEDE项目(现在称为OpenWRT)是一个开源的嵌入式操作系统,主要针对路由器和其他网络设备。本文档是LEDE用户指南的一部分,专注于从命令行升级LEDE固件的过程。固件升级会替换当前的LEDE系统,包括更新的Linux内核、...
总的来说,C# Windows蓝牙LE编程涉及了设备发现、服务和特性的交互、事件处理等多个环节,"BluetoothLEExplorer"项目提供了一个实际的示例,帮助开发者理解和实践这些概念。通过深入研究和修改这个项目,开发者可以...
《蓝牙LE音频指南》这本书由蓝牙SIG组织的成员Nick Hunn撰写,主要介绍了最新的蓝牙LE音频规范及其将如何改变我们设计和使用音频及电话产品的方式。蓝牙LE(Low Energy)音频是蓝牙技术的一个重要更新,它旨在提高...
凌思微蓝牙LE5010是一款在当前市场广受欢迎的蓝牙芯片,它以其独特的功能和性能特点在物联网和智能设备领域中占据了重要的位置。这款芯片由凌思微电子(厦门)有限公司制造,专为低功耗蓝牙(BLE,Bluetooth Low ...
在本文中,我们将深入探讨如何解决熊猫电视LE32D11S或LE42D11S型号遇到的死机、卡机和白屏问题,以及如何利用提供的升级软件和方法进行有效的刷机操作。这是一篇针对智能电视用户的技术指南,旨在帮助您解决电视系统...
PMU(Power Management Unit)深度睡眠唤醒示例,演示了如何设置PMU进入低功耗模式并在特定事件(如外部中断)发生时被唤醒。这对于电池供电设备的节能设计至关重要。 3. **SVD DeepSleep SVS 间歇使能唤醒**: ...
在iOS平台,Bluetooth LE for iOS v2.3支持苹果的Core Bluetooth框架,该框架允许开发者在后台模式下处理蓝牙事件,这意味着即使应用程序在后台运行,也能维持与BLE设备的连接。此外,插件还提供了一套完整的API,...
在PLC编程中,这通常通过比较指令(如“GE”或“LE”)和移动指令(如“MOVE_B”或“MOVE_I”)来实现。遍历数组,每次比较相邻两个元素,如果顺序错误,则交换它们的位置。 3. **循环结构**:冒泡排序需要外层和内...
- **初始化**:在Unity场景中,首先需要初始化蓝牙LE模块,设置监听事件,准备扫描和连接设备。 - **设备扫描**:调用提供的API进行设备扫描,获取周围的BLE设备列表。 - **设备连接**:选择需要连接的设备,发起...
复旦微电子FM33LE0A是一款高性能、低功耗的微控制器,适用于各种嵌入式应用。这款MCU基于32位ARM Cortex-M0内核,具有丰富的外设接口和高效的处理能力,是电子开发领域中的常用选择。本文将深入探讨与FM33LE0A相关的...
**JCreator LE** 是一款专为Java开发设计的集成开发环境(IDE),相较于其他更为复杂的IDE,如Eclipse,它以其简洁易用的界面和轻量级的功能而著称。这款软件更适合初学者或者对复杂IDE不熟悉的人群,因为它能让用户...
"LE410(日志查看器)" 这个标题指的是一个名为“LE410”的特定工具或应用程序,它的主要功能是作为日志查看器。日志查看器通常用于检查和分析系统、应用或数据库的操作日志,以便监控活动、调试问题或进行性能优化。...
USB协议分析器LE-650H2是一款专业级的工具,主要用于USB接口的数据传输分析。USB(Universal Serial Bus)是一种广泛应用于计算机及其周边设备的数据通信接口,它为设备提供了高速、灵活且易于使用的连接方式。USB...
《Le Dimmer屏幕遮罩:实现高效且舒适的屏幕使用体验》 在当今信息化社会,我们的工作和生活离不开电脑,长时间面对屏幕可能导致视力疲劳、眼睛干涩等问题。为了解决这些问题,"Le Dimmer屏幕遮罩"应运而生。这款...
适用于 LE42D59-6A628-K420WD7-LE280-A2D04_SDA14100584 TCL电视刷机引导程序
在SQL Server中,日志文件记录了所有事务的详细信息,用于在系统崩溃、硬件故障或其他灾难性事件后恢复数据。SQL Server的日志恢复模型(如简单恢复、完整恢复和大容量日志恢复)提供了多种策略来保护数据的完整性和...
WinINSTALL_LE.exe是一个用于创建和管理.msi(Microsoft Installer)包的工具,它在IT行业中主要用于软件部署和分发。MSI是微软提供的一种标准化安装包格式,它包含应用程序的所有组件,确保安装过程的稳定性和一致...
在LEDE项目中,VLAN配置通过/etc/config/network文件的switch部分实现,使系统能够将物理接口划分为多个独立的VLAN接口,虽然它们共享相同的物理硬件。 在LEDE系统中,交换机配置通常包括以下部分: 1. **switch...