當乙個元素接收到事件的時候,會把他接收到的事件傳給自己的父級,一直到window
,當然其傳播的是事件,繫結的執行函式並不會傳播,如果父級沒有繫結事件函式,就算傳遞了事件,也不會有什麼表現,但事件確實傳遞了。
事件冒泡的原因是事件源本身可能沒有處理事件的能力,即處理事件的函式並未繫結在該事件源上。它本身並不能處理事件,所以需要將事件傳播出去,從而能達到處理該事件的執行函式。
當點選id
為i3
的時,瀏覽器會依次彈出
3 2 1
,這就是事件冒泡,此正方形處於葉節點上,對其操作的事件會向上進行冒泡,直到根節點。
"i1例如我們有" style="
height: 150px;width: 150px;background: red;
">
"i2" style="
height: 100px;width: 100px;background: green;
">
"i3" style="
height: 50px;width: 50px;background: blue;
">
10
個
標籤,每個標籤有乙個uid
作為判斷使用者點選的區別,使用冒泡就不需要為每個
繫結點選事件,可以稱為事件委託
阻止冒泡
有時候我們並不希望事件冒泡而去執行上級節點繫結的事件,這時候就需要阻止事件的冒泡,w3c
的方法是e.stoppropagation()
,ie
則是使用window.event.cancelbubble = true;
。
class="box">
class="
txt">
點選
效果圖
點選外層div出現43行列印結果
點選span出現阻止冒泡
點選button會出現43行列印結果才是50行的列印
可以看出點選哪一行它都會有乙個先後順序的出現
阻止事件預設
跳轉當乙個元素接收到事件的時候,會把他接收到的事件傳給自己的父級,一直到window
,當然其傳播的是事件,繫結的執行函式並不會傳播,如果父級沒有繫結事件函式,就算傳遞了事件,也不會有什麼表現,但事件確實傳遞了。
事件冒泡的原因是事件源本身可能沒有處理事件的能力,即處理事件的函式並未繫結在該事件源上。它本身並不能處理事件,所以需要將事件傳播出去,從而能達到處理該事件的執行函式。
當點選id
為i3
的時,瀏覽器會依次彈出
3 2 1
,這就是事件冒泡,此正方形處於葉節點上,對其操作的事件會向上進行冒泡,直到根節點。
"i1例如我們有" style="
height: 150px;width: 150px;background: red;
">
"i2" style="
height: 100px;width: 100px;background: green;
">
"i3" style="
height: 50px;width: 50px;background: blue;
">
10
個
標籤,每個標籤有乙個uid
作為判斷使用者點選的區別,使用冒泡就不需要為每個
繫結點選事件,可以稱為事件委託
阻止冒泡
有時候我們並不希望事件冒泡而去執行上級節點繫結的事件,這時候就需要阻止事件的冒泡,w3c
的方法是e.stoppropagation()
,ie
則是使用window.event.cancelbubble = true;
。
class="box">
class="
txt">
點選
效果圖
點選外層div出現43行列印結果
點選span出現阻止冒泡
點選button會出現43行列印結果才是50行的列印
可以看出點選哪一行它都會有乙個先後順序的出現
阻止事件預設
跳轉 js阻止事件冒泡
今天遇到乙個小問題 li div div本身有click事件 然後li也有click事件 當觸發li標籤的click事件時,div的click事件也會觸發 因此加了e.stoppropagation 來阻止事件冒泡 但是firefox對e不相容,於是加了e e window.event e e wi...
js阻止事件冒泡
比如上面這個頁面,分為三層 divone是第外層,divtwo中間層,hr three是最裡層 他們都有各自的click事件,最裡層a標籤還有href屬性。執行頁面,點選 點選我 會依次彈出 我是最裡層 我是中間層 我是最外層 這就是事件冒泡,本來我只點選id為hr three的標籤,但是確執行了三...
JS阻止事件冒泡,阻止預設事件
1 event.stoppropagation 阻止冒泡事件,不讓事件向documen上蔓延,但是預設事件任然會執行,當你掉用這個方法的時候,如果點選乙個鏈結,這個鏈結仍然會被開啟 2 event.preventdefault 阻止預設事件,呼叫此方法是,鏈結不會被開啟,但是會發生冒泡,冒泡會傳遞到...