日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS 关于事件冒泡,事件捕获,阻止事件冒泡,取消默认事件

發布時間:2023/12/20 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS 关于事件冒泡,事件捕获,阻止事件冒泡,取消默认事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

addEventListener() 方法,監聽事件,向一個元素添加多個事件處理程序。
第一個參數是事件的類型(比如 “click” 或 “mousedown”)。
第二個參數是當事件發生時我們需要調用的函數。
第三個參數是布爾值,指定使用事件冒泡還是事件捕獲。此參數是可選的。



事件冒泡

多個元素嵌套并調用同一個事件時,由內部子元素先觸發事件,再觸發父元素的事件。

<body><div id="box"><button type="button" id="btn">按鈕</button></div><script type="text/javascript">var box = document.getElementById("box");var btn = document.getElementById("btn");// 事件冒泡,嵌套元素,子元素先觸發,之后觸發父元素,以此類推btn.addEventListener("click",function(){console.log("btn-------");});document.addEventListener("click",function(){console.log("document-------");});box.addEventListener("click",function(){console.log("box-------");});//使用外部函數時,嵌套元素,觸發事件冒泡/*btn.onclick = function() {console.log("btn-------");}box.onclick = function() {console.log("box-------");}document.onclick = function() {console.log("document-------");}*/</script> </body>

事件捕獲

多個元素嵌套并調用同一個事件時,由父元素先觸發事件,再內部子父元素的事件。

<body><div id="box"><button type="button" id="btn">按鈕</button></div><script type="text/javascript">var box = document.getElementById("box");var btn = document.getElementById("btn");// 事件捕獲,嵌套元素,父元素先被觸發,之后觸發子元素,以此類推btn.addEventListener("click",function(){console.log("btn-------");},true);document.addEventListener("click",function(){console.log("document-------");},true);box.addEventListener("click",function(){console.log("box-------");},true);</script> </body>


阻止事件冒泡

使用event.stopPropagation()方法,終止事件在傳播過程的捕獲、目標處理或起泡階段進一步傳播。

該方法將停止事件的傳播,阻止它被分派到其他 Document 節點。在事件傳播的任何階段都可以調用它。注意,雖然該方法不能阻止同一個 Document 節點上的其他事件句柄被調用,但是它可以阻止把事件分派到其他節點。

<body><div id="box"><button type="button" id="btn">按鈕</button></div><script type="text/javascript">var box = document.getElementById("box");var btn = document.getElementById("btn");btn.addEventListener("click", function(event) {var event = event || window.event; //兼容性處理//跨瀏覽器的事件對象if (event.stopPropagation) {//阻止事件冒泡event.stopPropagation(); //非IE} else {//阻止事件冒泡event.cancelBubble = true; //IE}console.log("btn-------");});box.addEventListener("click", function() {//未使用event.stopPropagation()方法阻止事件冒泡console.log("box-------");});document.addEventListener("click", function() {console.log("document-------");});</script> </body>


取消默認事件

方法一:使用event.preventDefault()方法
該方法將通知 Web 瀏覽器不要執行與事件關聯的默認動作(如果存在這樣的動作)。

<body><a href="https://www.baidu.com/?tn=48020221_20_hao_pg&H123Tmp=nunew11" id="a1">a1取消默認事件</a><a href="https://www.baidu.com/?tn=48020221_20_hao_pg&H123Tmp=nunew11" id="a2">a2未取消默認事件</a><script type="text/javascript">var a1 = document.getElementById("a1");var a2 = document.getElementById("a2");// 取消默認事件:方法1 event.preventDefault()a1.onclick=function(event){var event = event || window.event; //兼容性處理//跨瀏覽器的事件對象if(event.preventDefault){// 取消默認事件event.preventDefault(); //非IE}else{// 取消默認事件event.returnValue=false; //IE}console.log("a1-------取消了默認事件");}</script> </body>

方法二:return false;
阻止事件繼續傳播,事件冒泡和默認行為都被阻止。

<body><a href="https://www.baidu.com/?tn=48020221_20_hao_pg&H123Tmp=nunew11" id="a1">a1刪除</a><a href="https://www.baidu.com/?tn=48020221_20_hao_pg&H123Tmp=nunew11" id="a2">a2刪除</a><script type="text/javascript">var a1 = document.getElementById("a1");var a2 = document.getElementById("a2");// 取消默認事件:方法2 return falsea1.onclick = function() {console.log("a1-------取消了默認事件");return false; //事件處理函數會取消事件,不再繼續向下執行。比如表單將終止提交。(阻止事件繼續傳播,事件冒泡和默認行為都被阻止。)}</script> </body>

總結

以上是生活随笔為你收集整理的JS 关于事件冒泡,事件捕获,阻止事件冒泡,取消默认事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。