javascript事件冒泡簡(jiǎn)單示例
本文實(shí)例講述了javascript事件冒泡的定義與用法。分享給大家供大家參考,具體如下:
<!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</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 = '鼠標(biāo)現(xiàn)在進(jìn)入的是: ' + 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 = '鼠標(biāo)現(xiàn)在進(jìn)入的是: ' + 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樹的結(jié)構(gòu)是:
</p>
<pre><code>
UL
- LI
- A
- SPAN
</code></pre>
<div>
<ul>
<li>
<a href="http://www.dbjr.com.cn/#"><span>Bubbllllllllllllllle</span></a>
</li>
<li>
<a href="http://www.dbjr.com.cn/#"><span>Bubbllllllllllllllle</span></a>
</li>
</ul>
</div>
<textarea>
</textarea>
<p>
鼠標(biāo)進(jìn)入U(xiǎn)L的任何一個(gè)子元素,如果不停止冒泡,我們從UL到SPAN都定義了鼠標(biāo)懸停(
<code>
mouseover
</code>)事件,這個(gè)事件會(huì)上升了UL,從而從鼠標(biāo)所進(jìn)入的元素到UL元素都會(huì)有紅色的邊。
</p>
<div>
<ul>
<li>
<a href="http://www.dbjr.com.cn/#"><span>Bubbllllllllllllllle</span></a>
</li>
<li>
<a href="http://www.dbjr.com.cn/#"><span>Bubbllllllllllllllle</span></a>
</li>
</ul>
</div>
<p>
如果停止冒泡,事件不會(huì)上升,我們就可以獲取精確的鼠標(biāo)進(jìn)入元素。
</p>
</body>
</html>
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JS檢索下拉列表框中被選項(xiàng)目的索引號(hào)(selectedIndex)
這篇文章主要介紹了JS檢索下拉列表框中被選項(xiàng)目的索引號(hào)(selectedIndex),本文通過(guò)實(shí)例代碼圖文詳解的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-12-12
IE event.srcElement和FF event.target 功能比較
可以捕獲當(dāng)前事件作用的對(duì)象,如event.srcElement.tagName可以捕獲活動(dòng)標(biāo)記名稱。2010-03-03
Javascript中內(nèi)建函數(shù)reduce的應(yīng)用詳解
內(nèi)建函數(shù)其實(shí)就是內(nèi)置函數(shù),reduce函數(shù)是ECMAScript5規(guī)范中出現(xiàn)的數(shù)組方法。在平時(shí)的工作中,相信大家使用的場(chǎng)景并不多,這篇文章給大家詳細(xì)介紹了函數(shù)reduce的應(yīng)用以及多重疊加,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10
兩種JavaScript的AES加密方式(可與Java相互加解密)
這篇文章主要介紹了兩種JavaScript的AES加密方式(可與Java相互加解密) 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08
JavaScript 異步調(diào)用框架 (Part 1 - 問(wèn)題 & 場(chǎng)景)
在Ajax應(yīng)用中,調(diào)用XMLHttpRequest是很常見的情況。特別是以客戶端為中心的Ajax應(yīng)用,各種需要從服務(wù)器端獲取數(shù)據(jù)的操作都通過(guò)XHR異步調(diào)用完成。2009-08-08
JavaScript中var let const的用法有哪些區(qū)別
在ES6(ES2015)出現(xiàn)之前,JavaScript中聲明變量就只有通過(guò)var關(guān)鍵字,函數(shù)聲明是通過(guò)function關(guān)鍵字,而在ES6之后,聲明的方式有var、let、const、function、class,本文主要討論var、let和const之間的區(qū)別2021-10-10
小程序?qū)崿F(xiàn)訂單倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)訂單倒計(jì)時(shí)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
深入解析js輪播插件核心代碼的實(shí)現(xiàn)過(guò)程
這篇文章主要深度揭密了js輪播插件核心代碼的實(shí)現(xiàn)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

