JavaScript事件冒泡機(jī)制原理實(shí)例解析
這篇文章主要介紹了JavaScript事件冒泡機(jī)制原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
DOM事件流(event flow )存在三個(gè)階段:事件捕獲階段、處于目標(biāo)階段、事件冒泡階段,事件冒泡順序是由內(nèi)到外進(jìn)行事件傳播,事件冒泡是由IE開發(fā)團(tuán)隊(duì)提出來的,即事件開始時(shí)由最具體的元素(文檔中嵌套層次最深的那個(gè)節(jié)點(diǎn))接收,然后逐級(jí)向上傳播。
聽了簡(jiǎn)介介紹之后,您可能不理解,所以舉個(gè)例子:
<html> <head> <title>js事件冒泡測(cè)試</title> </head> <body> <div id='content' onclick='alert("content")'> <div id='div' onclick='alert("div");'> <ul onclick='alert("ul");'> <li onclick='alert("li");'>test</li> </ul> </div> </div> </body> </html>
點(diǎn)擊test頁簽,會(huì)依次執(zhí)行l(wèi)i的onclick、ul的onclick、div的onclick,content的onclick,從內(nèi)到外執(zhí)行,所以這個(gè)就是冒泡事件的簡(jiǎn)單例子
最近也遇到了這種情況,所以就去網(wǎng)上搜索資料,簡(jiǎn)單學(xué)習(xí)一下,就是點(diǎn)擊一個(gè)按鈕的時(shí)候,竟然觸發(fā)了兩次,通過排查,發(fā)現(xiàn)了冒泡機(jī)制導(dǎo)致的,解決方法是禁用事件冒泡機(jī)制
w3c的方法是e.stopPropagation(),IE則是使用e.cancelBubble = true
$(element).click(function(e){ e.stopPropagation();//ie e.cancelBubble = true });
當(dāng)然除了冒泡機(jī)制會(huì)導(dǎo)致onclick被調(diào)用兩次外,事件被綁定2次的情況也有可能,解決方法是解除事件,然后再綁定
$(element).unbind('click').click(function() { // todo })
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript 中事件冒泡和事件捕獲機(jī)制的詳解
- javascript事件捕獲機(jī)制【深入分析IE和DOM中的事件模型】
- js事件監(jiān)聽機(jī)制(事件捕獲)總結(jié)
- Javascript 事件冒泡機(jī)制詳細(xì)介紹
- js點(diǎn)擊事件的執(zhí)行過程實(shí)例分析【冒泡與捕獲】
- javascript事件冒泡詳解和捕獲、阻止方法
- js冒泡、捕獲事件及阻止冒泡方法詳細(xì)總結(jié)
- js事件冒泡、事件捕獲和阻止默認(rèn)事件詳解
- JavaScript中捕獲/阻止捕獲、冒泡/阻止冒泡方法
- JS中綁定事件順序(事件冒泡與事件捕獲區(qū)別)
- javascript事件冒泡和事件捕獲詳解
- js事件機(jī)制----捕獲與冒泡機(jī)制實(shí)例分析
相關(guān)文章
用原生js統(tǒng)計(jì)文本行數(shù)的簡(jiǎn)單示例
這篇文章我們來看看如何利用原生的JavaScript實(shí)現(xiàn)統(tǒng)計(jì)文本的行數(shù),代碼實(shí)現(xiàn)起來很簡(jiǎn)單,有需要的可以參考借鑒。2016-08-08js 判斷各種數(shù)據(jù)類型的簡(jiǎn)單方法(推薦)
下面小編就為大家?guī)硪黄猨s 判斷各種數(shù)據(jù)類型的簡(jiǎn)單方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08js如何獲取file控件的完整路徑具體實(shí)現(xiàn)代碼
需要隱藏input file然后獲取它的值,但連jquery都無法獲取它的值,下面與大家分享下使用js的具體獲取方法,感興趣的朋友可以參考下哈2013-05-05使用ngrok+express解決本地環(huán)境中微信接口調(diào)試問題
這篇文章主要介紹了使用ngrok+express解決本地環(huán)境中微信接口調(diào)試問題,需要的朋友可以參考下2018-02-02ES6數(shù)組與對(duì)象的解構(gòu)賦值詳解
這篇文章主要介紹了ES6數(shù)組與對(duì)象的解構(gòu)賦值,結(jié)合實(shí)例形式詳細(xì)分析了ES6中數(shù)組與對(duì)象的解構(gòu)賦值原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06JavaScript通過RegExp實(shí)現(xiàn)客戶端驗(yàn)證處理程序
通過RegExp實(shí)現(xiàn)客戶端驗(yàn):讓文本框只允許輸入數(shù)字、文本框只允許輸入中文、郵箱輸入格式的判斷等等,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-05-05JS?new操作原理及手寫函數(shù)模擬實(shí)現(xiàn)示例
這篇文章主要為大家介紹了JS?new操作原理及手寫函數(shù)模擬實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Javascript中獲取瀏覽器類型和操作系統(tǒng)版本等客戶端信息常用代碼
跟蹤一些最基本的客戶端訪問信息,這里將一些公用的代碼總結(jié)下來,需要的朋友可以參考下2016-06-06