js之事件冒泡和事件捕获
事件冒泡(的過程):事件從發生的目標(event.srcElement||event.target)開始,沿著文檔逐層向上冒泡,到document為止。
事件捕獲(的過程):則是從document開始,沿著文檔樹向下,直到事件目標為止。
關鍵一句:在IE瀏覽器中,只發生事件冒泡的過程;在W3C(或支持事件捕獲的)瀏覽器中,先發生捕獲的過程,再發生冒泡的過程。
想要添加一個由捕獲過程觸發的事件,只能這樣了:
addEventListener('click',functionname,true);//該方法在IE下報錯(對象不支持此屬性或方法)
注:將第三個參數設置為true,表明該事件是為捕獲過程設置的。如果第三個參數為false,則等同onclick =functionname;
[html]?view plaincopy以上代碼執行效果如下:
1、$('m').onclick = altmiddle;
a)當點擊#i時,顯示順序為in,middle,out
b)當點擊#m時,顯示順序為middle,out
c)當點擊#o時,顯示順序為out
2、$('m').addEventListener('click',altmiddle,true);
a)當點擊#i時,顯示順序為middle,in,out
b)當點擊#m時,顯示順序為middle,out
c)當點擊#o時,顯示順序為out
3、$('m').addEventListener('click',altmiddle,false);
a)當點擊#i時,顯示順序為in,middle,out
b)當點擊#m時,顯示順序為middle,out
c)當點擊#o時,顯示順序為out
?
把事件捕獲和冒泡的過程統稱為事件的傳播
事件的傳播是可以阻止的:
??在W3C中,使用stopPropagation()方法
??在IE下設置cancelBubble = true;
在捕獲的過程中stopPropagation()后,后面的冒泡過程也不會發生了~
阻止事件的默認行為,例如click <a>后的跳轉~
??在W3C中,使用preventDefault()方法;
??在IE下設置window.event.returnValue = false;
總結
以上是生活随笔為你收集整理的js之事件冒泡和事件捕获的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看图理解scrollTop,scroll
- 下一篇: DOM下的节点属性和操作小结