js事件(Event)之(三)阻止事件冒泡


前續:本文來自於網絡文章整理,僅供參考,歡迎糾錯指正。

JS事件流其中一種是冒泡事件,當一個元素被觸發一個事件時,該目標元素的事件會優先被執行,然后向外傳播到每個祖先元素,恰如水里的一個泡泡似的,從產生就一直往上浮,到在水平面時,它才消失。在這個過程中,如果你只希望事件發生在目標元素,而不想它傳播到祖先元素上去,那么你需要在“泡泡”離開對象之前刺破它。

js做法:

1 function stopPropagation(e) {  
2     e = e || window.event;  
3     if(e.stopPropagation) { //W3C阻止冒泡方法  
4         e.stopPropagation();  
5     } else {  
6         e.cancelBubble = true; //IE阻止冒泡方法  
7     }  
8 } 

或者如下:

1 function stopPro(evt){ 
2     var e = evt || window.event; 
3     //returnValue如果設置了該屬性,它的值比事件句柄的返回值優先級高。把這個屬性設置為 fasle, 
4     //可以取消發生事件的源元素的默認動作。 
5     //window.event?e.returnValue = false:e.preventDefault();//默認事件 
6     window.event?e.cancelBubble=true:e.stopPropagation(); 
7 } 

jQuery做法:

方式一:event.stopPropagation();

1 $("#div1").mousedown(function(event){ 
2     event.stopPropagation(); //阻止冒泡事件,上級的xxx事件不會被調用,但不阻止事件本身
3 }); 

方式二:return false;

1 $("#div1").mousedown(function(event){ 
2     return false; //不僅阻止了事件往上冒泡,而且阻止了事件本身 
3 }); 

 


免責聲明!

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



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