js dom 阻止事件冒泡,阻止事件的默認行為


參考博客: https://www.cnblogs.com/plane-hjh/p/7880131.html

https://www.cnblogs.com/leftJS/p/10948138.html

http://caibaojian.com/javascript-stoppropagation-preventdefault.html

https://www.cnblogs.com/gopark/p/9579062.html
 
 

 阻止事件冒泡http://caibaojian.com/javascript-stoppropagation-preventdefault.html

 
1 兩種方式來阻止事件捕獲和冒泡 。

在正常的開發過程中,如果想要阻止事件的傳播,通過一個方法實現。

 

    在微軟的模型中,你必須設置事件的cancelBubble的屬性為true

 

window.event.cancelBubble = true

 

    在w3c模型中你必須調用事件的stopPropagation()方法

 

e.stopPropagation()//阻止事件冒泡

event. stopImmediatePropagation()//可以阻止掉同一事件的其他優先級較低的偵聽器的處理(這貨表示沒用過,優先級就不說明了,谷歌或者問度娘吧。)

 

通過調用這些方法會阻止所有冒泡向外傳播。跨瀏覽器解決方案:

 

function doSomething(e) {

 if (!e) {

 var e = window.event;

 e.cancelBubble = true;

 }

 if (e.stopPropagation) {

 e.stopPropagation();

 }

}

 

 

2  阻止事件的默認行為,例如click <a>后的跳轉~ 


  • 在IE下設置window.event.returnValue = false; 

 

  • 在W3c中,使用preventDefault()方法; //阻止元素默認的行為,如鏈接的跳轉、表單的提交;

 

  event.target與event.currentTarget他們有什么不同?

  target在事件流的目標階段;currentTarget在事件流的捕獲,目標及冒泡階段。只有當事件流處在目標階段的時候,兩個的指向才是一樣的, 而當處於捕獲和冒泡階段的時候,target指向被單擊的對象而currentTarget指向當前事件活動的對象(一般為父級)。

 

javascript的return false只會阻止默認行為,而是用 jQuery的話則既阻止默認行為又防止對象冒泡。
下面這個使用原生js,只會阻止默認行為,不會停止冒泡
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM