關于冒泡問題
之前章節里提到的冒泡事件是:子元素如果綁定了某一事件(比如說mouseover),如果子元素出觸發了mouseover事件,它會一直往上找父元素上的mouseover事件,如果父元素有mouseover事件,那么父元素的mouseover也會被觸發。也就是說父元素和子元素都綁定了相同事件才會出現冒泡現象。
但是這里的li元素并沒有綁定任何事件,怎么往上冒泡呢?換句話說,綁定的是ul元素,為什么起作用的是li元素?
之前章節里提到的冒泡事件是:子元素如果綁定了某一事件(比如說mouseover),如果子元素出觸發了mouseover事件,它會一直往上找父元素上的mouseover事件,如果父元素有mouseover事件,那么父元素的mouseover也會被觸發。也就是說父元素和子元素都綁定了相同事件才會出現冒泡現象。
但是這里的li元素并沒有綁定任何事件,怎么往上冒泡呢?換句話說,綁定的是ul元素,為什么起作用的是li元素?
2019-11-08
舉報
2020-04-11
我覺得,本教程的“綁定”這個詞用的不好,事件這個東西應該是稱之為“監聽”更為恰當。
當單擊一個元素、或滑入滑出元素時,都會由該元素觸發事件,然后一層一層向上冒泡,如果一直到body都沒有遇到某元素去監聽這個事件,那就沒有任何反應,如果該元素有監聽該單擊事件,那就會知道這個事件,如果該元素的父代或祖代有添加監聽事件,也會知道這個事件。
打個比喻,ABCDEF站成一排,A倒了一桶巧克力,從A流向F,
A用手沾了舔了舔,知道是甜的,A倒的
D用手沾了舔了舔,也知道是甜的,A倒的
這就是A和D監聽了“倒一桶巧克力”這個事件
如果沒有任何人舔,那這桶巧克力一樣從A流向F
2020-04-01
冒泡的本質是繼承,為什么很多人都是從下往上的去理解呢? 因為是繼承,所以ul綁定事件后,該事件也被綁定在了它的子孫元素上,所以你點擊任何一個它的子孫元素都會觸發事件。如果這個子孫元素本身也綁定了一個一樣的事件,那么就會觸發兩次該事件。
假設一下,a-b-c a是祖先 c是子孫 ;將a,b,c同時綁定click,那么根據繼承的原理,a只綁定了一個click事件,b兩個,c三個;同理,如果只有a綁定事件,b,c也只綁定了一次事件。
2019-11-30
不存在綁定的說法,jquery只是處理觸發的事件,事件本身就有,如果不捕獲處理,事件會一直冒泡
這里只是在ul處理捕獲的事件,任何文檔對象如ul,li都可以觸發事件,只是在于是否捕獲處理