淺談javascript中stopImmediatePropagation函數和stopPropagation函數的區別


  在事件處理程序中,每個事件處理程序中間都會有一個event對象,而這個event對象有兩個方法,一個是stopPropagation方法,一個是stopImmediatePropagation方法,兩個方法只差一個Immediate,這里就說說這兩個方法的區別

  1、stopImmediatePropagation方法:

    stopImmediatePropagation方法作用在當前節點以及事件鏈上的所有后續節點上,目的是在執行完當前事件處理程序之后,停止當前節點以及所有后續節點的事件處理程序的運行

  2、stopPropagation方法

    stopPropagation方法作用在后續節點上,目的在執行完綁定到當前元素上的所有事件處理程序之后,停止執行所有后續節點的事件處理程序

  

  區別:

    從概念上講,在調用完stopPropagation函數之后,就會立即停止對后續節點的訪問,但是會執行完綁定到當前節點上的所有事件處理程序;而調用stopImmediatePropagation函數之后,除了所有后續節點,綁定到當前元素上的、當前事件處理程序之后的事件處理程序就不會再執行了

  舉個例子:

    //html代碼

    

<div id = "div1">
    <button id = "button1"></button>
</div>

    //js代碼

    

  var div = document.getElementById("div1");
    var btn = document.getElementById("button1");
            
    div.addEventListener("click" , function(){alert("第一次執行");} , true);        //1
    div.addEventListener("click" , function(){alert("第二次執行");} , true);        //2
    btn.addEventListener("click" , function(){alert("button 執行");});            //3

    

  在這里,給 1 函數alert后加上stopImmediatePropagation, 那么之后彈出窗口“第一次執行”
  但是如果給 1 函數alert后加上stopPropagation , 那么之后會彈出窗口“第一次執行”,“第二次執行”兩個窗口

 


免責聲明!

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



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