자바스크립트 이벤트 버블링
저자:Eve Cole
업데이트 시간:2009-06-11 16:22:17
HTML代码
<!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">
<머리>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="developer" content="Realazy" />
<title>JavaScript DOM의 버블</title>
<style type="text/css" 미디어="화면">
div * {디스플레이:블록; 여백:4px; 패딩:4px; 테두리:1px 단색 흰색;}
텍스트 영역 {너비:20em; 높이:2em;}
</style>
<스크립트 유형="텍스트/자바스크립트">
//<![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 단색 흰색';
};
}
}
window.onload = 초기화;
//]]>
</script>
</head>
<본문>
<h1>JavaScript DOM의 버블</h1>
<p>DOM의 유형:</p>
<프리><코드>
UL
- 리
-A
- 기간
</code></pre>
<div>
<ul>
<li><a href="#"><span>Bubbllllllllllllll</span></a></li>
<li><a href="#"><span>Bubbllllllllllllll</span></a></li>
</ul>
</div>
<텍스트 영역></textarea>
<p>鼠标进入UL的任何一个子元素, 如果不停止冒泡, 我们从UL到SPANت义了鼠标悬停 (<code>mouseover</code>)事件,这个事件会上升了UL,从而从鼠标所进入的元素到UL元素道会有红color的边.</p>
<div>
<ul>
<li><a href="#"><span>Bubbllllllllllllll</span></a></li>
<li><a href="#"><span>Bubbllllllllllllll</span></a></li>
</ul>
</div>
<p>如果停止冒泡,事件不会上升,我们就可以获取精确的鼠标进入元素。</p>
</body>
</html>