亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我發現,某個元素的鼠標事件如果通過其他元素觸發,無法阻止這個事件的冒泡過程。為什么?

我發現個問題:某個元素的mousedown事件如果是通過其他元素觸發的,那么這個事件無法阻止冒泡。最終document上面也會有這個事件。

我的試驗過程:首先在document上綁定mouseup,mousedown事件。

在測試一,我將event.stopPropagation()加到button的事件處理函數中。當我按下鼠標時不會觸發document事件處理函數。

在測試二,由于p元素的mousedown事件是由btn元素的mousedown事件觸發的。那么無論你在哪個元素內的處理函數內加入event.stopPropagation()都不會阻止事件冒泡,最終都會在document上觸發mouseup,mousedown事件。甚至在p元素的父元素div上加入阻止冒泡代碼也沒有任何效果。

不知道其他同學是否也發現了這個問題,能不能解釋下這是為什么!?

正在回答

2 回答

正常情況下,假如現在有三個元素嵌套<div><p><button></button></p></div>,每個元素綁定一個click事件。

現在點擊button,將會冒泡觸發。然后利用event.stopPropagation()阻止冒泡,OK。

現在將buttom里面的事件改為 $("p").click(),

1、event.stopPropagation() 放在button里面;

? ? ?在不考慮冒泡的情況下,點擊button之后 p的click事件一定會執行,繼而引發div。冒泡阻止NG。

2、event.stopPropagation() 放在p里面;

? ? ?點擊button事件后,觸發p的click事件,遇到冒泡阻止,但是button自身也會觸發冒泡(即不管button的內容是什么都會觸發一次p.click()),所以執行后應該為 p.click()+p.click。冒泡阻止NG。

3、event.stopPropagation() 放在div里面;冒泡阻止NG。

綜上所述,冒泡阻止只會阻止放置event.stopPropagation()事件的元素,對于這一種冒泡的阻止,請在button和p里面都放置event.stopPropagation()。


0 回復 有任何疑惑可以回復我~

0.0.0

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我發現,某個元素的鼠標事件如果通過其他元素觸發,無法阻止這個事件的冒泡過程。為什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號