亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Js冒泡事件詳解及阻止示例

 更新時間:2014年03月21日 16:10:01   作者:  
如果某元素定義了事件A,如click事件,如果觸發(fā)了事件之后,沒有阻止冒泡事件,那么事件將向父級元素傳播
Js冒泡機制是指如果某元素定義了事件A,如click事件,如果觸發(fā)了事件之后,沒有阻止冒泡事件,那么事件將向父級元素傳播,觸發(fā)父類的click函數(shù)。
如下例所示:
復(fù)制代碼 代碼如下:

<html>
<script type="text/javascript" src="jquery-1.7.1.js"></script>
<script>
function ialertdouble(e) {
alert('innerdouble');
stopBubble(e);
}

function ialertthree(e) {
alert('innerthree');
stopBubbleDouble(e);
}

function stopBubble(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡
}

function stopBubbleDouble(e) {
var evt = e||window.event;
evt.stopPropagation?evt.stopPropagation():(evt.cancelBubble=true);//阻止冒泡
evt.preventDefault();//阻止瀏覽器默認行為,這樣鏈接就不會跳轉(zhuǎn)
}

$(function() {
//方法一
//$('#jquerytest').click(function(event) {
// alert('innerfour');
// event.stopPropagation();
// event.preventDefault();
//});

//方法二
$('#jquerytest').click(function() {
alert('innerfour');
return false;
});
});
</script>
<div onclick="alert('without');">without
<div onclick="alert('middle');">middle
<div onclick="alert('inner');">inner</div>
<div onclick="ialertdouble(event)">innerdouble</div>
<p><a onclick="ialertthree(event)">innerthree</a></p>
<p id='jquerytest'><a >innerfour</a></p>
</div>
</div>
</html>

當(dāng)你點擊inner的時候,會依次彈出‘inner',‘middle'和‘without'。這就是事件冒泡。

從直觀上來看,也是這樣的,因為最里層的區(qū)域是在父級節(jié)點中的,點擊了子級節(jié)點的區(qū)域,其實也是點擊了父級節(jié)點的區(qū)域,所以事件會傳播起來。

其實,很多的時候,我們并不想事件冒泡,因為這樣會同時觸發(fā)幾個事件。

接下來:我們點擊innerdouble。就會發(fā)現(xiàn)她并沒有冒泡,因為她在調(diào)用的方法ialertdouble()中調(diào)用了stopBubble()方法,方法通過判斷瀏覽器類型(Ie通過cancleBubble() 、firefox通過stopProgation())來阻止冒泡。

但如果是鏈接的話,我們會發(fā)現(xiàn)她也會阻止冒泡,但是會跳轉(zhuǎn),這就是瀏覽器的默認行為。需要借助preventDefault()方法來阻止。具體可以查看ialertthree()。

目前主流的都是借助jquery來綁定click事件的,這樣的話,就簡單多了。

我們可以在點擊事件時傳入?yún)?shù)event,然后直接

event.stopPropagation();
event.preventDefault(); //沒有鏈接不需要加這個。

這樣就可以了。

框架就是好,其實還有更簡單的,在事件處理程序中返回false,這是對在事件對象上同時調(diào)用stopPropagation()和preventDefault()的一種簡寫方式。
【詳細代碼見上面,記得載入jquery.js。】

其實也還可以在每個click事件中加入判斷:
復(fù)制代碼 代碼如下:

$('#id').click(function(event){
if(event.target==this){
//do something
}
})

解析:事件處理程序中的變量event保存著事件對象。而event.target屬性保存著發(fā)生事件的目標元素。這個屬性是DOM API中規(guī)定的,但是沒有被所有瀏覽器實現(xiàn) 。jQuery對這個事件對象進行了必要的擴展,從而在任何瀏覽器中都能夠使用這個屬性。通過.target,可以確定DOM中首先接收到事件的元素(即實際被單擊的元素)。而且,我們知道this引用的是處理事件的DOM元素,所以可以編寫以上代碼。

不過推薦使用return false,Jquery綁定事件的話。

相關(guān)文章

  • 實用Javascript調(diào)試技巧分享(小結(jié))

    實用Javascript調(diào)試技巧分享(小結(jié))

    這篇文章主要介紹了實用Javascript調(diào)試技巧分享(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • js實現(xiàn)class樣式的修改、添加及刪除的方法

    js實現(xiàn)class樣式的修改、添加及刪除的方法

    這篇文章主要介紹了js實現(xiàn)class樣式的修改、添加及刪除的方法,主要通過修改標簽的className來實現(xiàn)這一功能,非常具有實用價值,需要的朋友可以參考下
    2015-01-01
  • js實現(xiàn)按鈕控制圖片360度翻轉(zhuǎn)特效的方法

    js實現(xiàn)按鈕控制圖片360度翻轉(zhuǎn)特效的方法

    這篇文章主要介紹了js實現(xiàn)按鈕控制圖片360度翻轉(zhuǎn)特效的方法,涉及HTML5中canvas方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 詳解基于Vue cli生成的Vue項目的webpack4升級

    詳解基于Vue cli生成的Vue項目的webpack4升級

    這篇文章主要介紹了詳解基于Vue cli生成的Vue項目的webpack4升級,本文將詳細介紹從webpack3到webpack4的升級過程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 微信小程序使用wx.chooseLocation開發(fā)地圖怎么做

    微信小程序使用wx.chooseLocation開發(fā)地圖怎么做

    這篇文章主要介紹了微信小程序使用wx.chooseLocation開發(fā)地圖流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • JavaScript 中有關(guān)數(shù)組對象的方法(詳解)

    JavaScript 中有關(guān)數(shù)組對象的方法(詳解)

    下面小編就為大家?guī)硪黄狫avaScript 中有關(guān)數(shù)組對象的方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • JavaScript中fetch()用法實例

    JavaScript中fetch()用法實例

    在前端快速發(fā)展地過程中,為了契合更好的設(shè)計模式,產(chǎn)生了 fetch 框架,下面這篇文章主要給大家介紹了關(guān)于JavaScript中fetch()用法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • js實現(xiàn)交換運動效果的方法

    js實現(xiàn)交換運動效果的方法

    這篇文章主要介紹了js實現(xiàn)交換運動效果的方法,涉及javascript操作頁面元素與相關(guān)樣式實現(xiàn)交換運動效果的技巧,需要的朋友可以參考下
    2015-04-04
  • JS獲取字符串實際長度(包含漢字)的簡單方法

    JS獲取字符串實際長度(包含漢字)的簡單方法

    下面小編就為大家?guī)硪黄狫S獲取字符串實際長度(包含漢字)的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 深入理解JavaScript系列(6) 強大的原型和原型鏈

    深入理解JavaScript系列(6) 強大的原型和原型鏈

    JavaScript 不包含傳統(tǒng)的類繼承模型,而是使用 prototypal 原型模型
    2012-01-01

最新評論