什麼是事件冒泡?
先上**看,思考以下**的執行結果~~
id="box1">
id="box2">div>
div>
var obox2=document.getelementbyid('box2');
var obox1=document.getelementbyid("box1");
obox2.addeventlistener('touchstart', touchstartbox2,false);
obox2.onclick=function
(e)obox1.addeventlistener('touchstart', touchstartbox1,false);
obox1.onclick=function
()function
touchstartbox2
(e)function
touchstartbox1
(e)
以上**中,box2和box1都有touch事件和click事件。觸發box2的touch事件,box1的touch事件也會執行。這個叫事件冒泡
什麼是預設事件?
還是以上**,觸發touch事件300ms後會觸發click事件,這是乙個預設事件
有了以上兩個概念,重新思考以上**的執行結果。看看和你想的一樣不?
執行結果 :
children bubble //先執行box2的touch事件
parent bubble //然後執行box1的touch事件
children default
//300ms後執行box2的預設事件click
parent
default
300ms後執行box1的預設事件click
現在,應該大致有乙個冒泡和預設事件的概念了吧,冒泡,顧名思義,一級一級element元素往上走,預設事件,乙個element上的不同事件。
那麼,阻止冒泡可以阻止預設事件嗎?
先看**及結果然後進行分析:
function
touchstartbox2
(e)
結果如下:
children bubble //box2觸發touch事件
children default
// box2觸發click事件
parent
default
// box1觸發click事件
想一下,阻止冒泡的話,box2 的 touch 事件不會冒泡到 box1 的 touch 事件,那麼:
box2 的 touch事件會觸發後
(1) box1 的 touch不會觸發 (因為box2的touch阻止冒泡了,注意注意注意:click事件沒有阻止冒泡)
(2) box2的 click 觸發說了冒泡是一級一級的影響不同的element,那麼不會影響 box2 的 click (因為這個click是touch 觸發300ms後會預設觸發的,還在box2上面)
(3) box1 觸發click事件,因為 box2 觸發了click事件,box2的click事件沒有阻止冒泡,因此box2的click冒泡到了 box1 的 click(此時,box2 的click是預設事件,box1的click事件是冒泡事件)
結論:阻止冒泡沒有阻止預設事件。且在哪個事件裡面新增阻止冒泡,阻止的只是該事件的冒泡!
阻止預設事件可以阻止冒泡嗎?
還是先看例子~~
function
touchstartbox2
(e)
執行結果:
children bubble
parent bubble
分析:
box2 阻止預設事件後
(1) box2 的click不執行(被阻止)
(2) box1的touch事件執行(沒有阻止冒泡)
(3) box1的click不執行(阻止預設事件所有元素的預設事件都會被阻止)
結論:阻止預設事件不會阻止冒泡
總結而言:阻止冒泡和阻止預設行為沒啥關係,阻止冒泡只阻止當前事件的冒泡,不會阻止其他事件冒泡,也不會阻止預設事件。阻止預設事件同樣不會阻止冒泡,但是會把預設事件都阻止掉。
想象和做真的是兩回事啊!
眼看大四了,每當寢室兄弟出去喝酒時,都有些感嘆大學生活真快啊,特別是頭幾天看到大四的同學畢業,都為找工作而奔波時,心裡更不是好滋味。這學期放假沒回家,班上好多同學都沒回,有點在這尋找實踐經驗,有點在這培訓。而我心裡想到的就是希望利用這個暑期好好學學專業知識。以後能找份工作,一天最多只能堅持兩三個小時...
js阻止冒泡事件和預設事件
event.stoppropagation 這個event要通過引數傳遞過來,不然可能有的瀏覽器 比如火狐 不能識別event 要像這麼寫 nclick init.toggleuserinfo this,event init.toggleuserinfo function target,event ...
阻止事件冒泡,阻止預設事件
阻止事件冒泡 html 冒泡事件測試 js table click function td click function span click function e 如果js中不加 e.stoppropagation 那輸出結果就依次為span td table。這就叫事件冒泡。就是從下到上,從裡到...