js冒泡、捕獲事件及阻止冒泡方法詳細總結(jié)
更新時間:2014年05月08日 09:36:29 作者:
javascript, jquery的事件中都存在事件冒泡和事件捕獲的問題,針對這兩個問題,本文給出詳細的解決方法,需要的朋友不要錯過
javascript, jquery的事件中都存在事件冒泡和事件捕獲的問題,下面將兩種問題及其解決方案做詳細總結(jié)。
事件冒泡是一個從子節(jié)點向祖先節(jié)點冒泡的過程;
事件捕獲剛好相反,是從祖先節(jié)點到子節(jié)點的過程。
給一個jquery點擊事件的例子:
代碼如下:
<!DOCTYPE html>
<meta charset="utf-8">
<title>test</title>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function(){
$('#clickMe').click(function(){
alert('hello');
});
$('body').click(function(){
alert('baby');
});
});
</script>
</head>
<body>
<div style="width:100px;height:100px;background-color:red;">
<button type="button" id="button2">click me</button>
<button id="clickMe">click</button>
</div>
</body>
</html>
事件冒泡現(xiàn)象:點擊 “id=clickMe” 的button,會先后出現(xiàn)“hello” 和 “baby” 兩個彈出框。
分析:當點擊 “id=clickMe” 的button時,觸發(fā)了綁定在button 和 button 父元素及body的點擊事件,所以先后彈出兩個框,出現(xiàn)所謂的冒泡現(xiàn)象。
事件捕獲現(xiàn)象:點擊沒有綁定點擊事件的div和 “id=button2” 的button, 都會彈出 “baby” 的對話框。
在實際的項目中,我們要阻止事件冒泡和事件捕獲現(xiàn)象。
阻止事件冒泡方法:
法1:當前點擊事件中return false;
$('#clickMe').click(function(){
alert('hello');
return false;
});
法2:
$('#clickMe').click(function(event){
alert('hello');
var e = window.event || event;
if ( e.stopPropagation ){ //如果提供了事件對象,則這是一個非IE瀏覽器
e.stopPropagation();
}else{
//兼容IE的方式來取消事件冒泡
window.event.cancelBubble = true;
}
});
貌似捕獲事件不能被阻止
事件冒泡是一個從子節(jié)點向祖先節(jié)點冒泡的過程;
事件捕獲剛好相反,是從祖先節(jié)點到子節(jié)點的過程。
給一個jquery點擊事件的例子:
代碼如下:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<meta charset="utf-8">
<title>test</title>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(function(){
$('#clickMe').click(function(){
alert('hello');
});
$('body').click(function(){
alert('baby');
});
});
</script>
</head>
<body>
<div style="width:100px;height:100px;background-color:red;">
<button type="button" id="button2">click me</button>
<button id="clickMe">click</button>
</div>
</body>
</html>
事件冒泡現(xiàn)象:點擊 “id=clickMe” 的button,會先后出現(xiàn)“hello” 和 “baby” 兩個彈出框。
分析:當點擊 “id=clickMe” 的button時,觸發(fā)了綁定在button 和 button 父元素及body的點擊事件,所以先后彈出兩個框,出現(xiàn)所謂的冒泡現(xiàn)象。
事件捕獲現(xiàn)象:點擊沒有綁定點擊事件的div和 “id=button2” 的button, 都會彈出 “baby” 的對話框。
在實際的項目中,我們要阻止事件冒泡和事件捕獲現(xiàn)象。
阻止事件冒泡方法:
法1:當前點擊事件中return false;
復(fù)制代碼 代碼如下:
$('#clickMe').click(function(){
alert('hello');
return false;
});
法2:
復(fù)制代碼 代碼如下:
$('#clickMe').click(function(event){
alert('hello');
var e = window.event || event;
if ( e.stopPropagation ){ //如果提供了事件對象,則這是一個非IE瀏覽器
e.stopPropagation();
}else{
//兼容IE的方式來取消事件冒泡
window.event.cancelBubble = true;
}
});
貌似捕獲事件不能被阻止
相關(guān)文章
JS實現(xiàn)的檢驗身份證格式并輸出出生日期,年齡,性別,出生地示例
這篇文章主要介紹了JS實現(xiàn)的檢驗身份證格式并輸出出生日期,年齡,性別,出生地,涉及javascript字符串遍歷、運算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05小程序如何在不同設(shè)備上自適應(yīng)生成海報的實現(xiàn)方法
這篇文章主要介紹了小程序如何在不同設(shè)備上自適應(yīng)生成海報的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08JavaScript中操作Mysql數(shù)據(jù)庫實例
這篇文章主要介紹了JavaScript中操作Mysql數(shù)據(jù)庫實例,本文直接給出實現(xiàn)代碼,代碼中包含詳細注釋,需要的朋友可以參考下2015-04-04js類型轉(zhuǎn)換與引用類型詳解(Boolean_Number_String)
本篇文章主要是對js中的類型轉(zhuǎn)換與引用類型(Boolean_Number_String)進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-03-03