javascript 事件冒泡
作者:Eve Cole
更新时间:2009-06-11 16:22:17
html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 过渡//EN"
“ http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ” >
<html xmlns=" http://www.w3.org/1999/xhtml " lang="zh" xml:lang="zh">
<头>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="开发人员" content="Realazy" />
<title>JavaScript DOM 中的气泡</title>
<style type="text/css" media="screen">
div * {显示:块;边距:4px;内边距:4px;边框:1px 纯白色;}
文本区域{宽度:20em;高度:2em;}
</风格>
<脚本类型=“文本/javascript”>
//<![CDATA[
函数初始化(){
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 = 函数(e){
this.style.border = '1px 纯红色';
log.value = '鼠标现在进入的是: ' + this.nodeName;
};
all[i].onmouseout = 函数(e){
this.style.border = '1px 纯白色';
};
}
var all2 = document.getElementsByTagName('div')[1].getElementsByTagName('*');
for (var i = 0, n = all2.length; i < n; ++i){
all2[i].onmouseover = 函数(e){
this.style.border = '1px 纯红色';
if (e) //停止事件冒泡
e.stopPropagation();
别的
window.event.cancelBubble = true;
log.value = '鼠标现在进入的是: ' + this.nodeName;
};
all2[i].onmouseout = 函数(e){
this.style.border = '1px 纯白色';
};
}
}
窗口.onload = init;
//]]>
</脚本>
</头>
<正文>
<h1>JavaScript DOM 中的气泡</h1>
<p>DOM树的结构是:</p>
<前><代码>
UL
-李
- A
- 跨度
</code></pre>
<div>
<ul>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
<li><a href="#"><span>Bubbllllllllllllllle</span></a></li>
</ul>
</div>
<文本区域></文本区域>
<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>
</正文>
</html>