JavaScript的事件機制包含,事件綁定、事件監聽、事件委托(事件代理)等
js中的事件流
① .冒泡:當下級節點觸發某個事件的時候,該事件會逐級向上觸發上級節點的同類事件。
② .捕獲:和冒泡類似,只不過事件的順序相反。即是從上級節點傳遞到下級節點
事件綁定
- 在DOM元素中直接綁定;
- 在JavaScript代碼中綁定;
- 綁定事件監聽函數addEventListener()。
事件監聽
- 關于事件監聽,W3C規范中定義了3個事件階段,依次是捕獲階段、目標階段、冒泡階段。
- 優點:1.可以綁定多個事件;2.可以解除相應的綁定
事件委托
定義:給父元素綁定事件,用來監聽子元素的冒泡事件,并找到是哪個子元素的事件。
好處:可以避免對每個子元素添加監聽器,減少操作DOM節點的次數,從而減少瀏覽器的重繪和重排,提高代碼的性能。使用事件委托,只有父元素與DOM存在交互,其他的操作都是在JS虛擬內存中完成的,這樣就大大提高了性能。
使用場景:當子元素有很多,需要對子元素的事件進行監聽的時候。
-
步驟:
- 第一步:給父元素綁定事件
給元素ul添加綁定事件,通過addEventListener為點擊事件click添加綁定 - 第二步:監聽子元素的冒泡事件
這里默認是冒泡,點擊子元素li會向上冒泡 - 第三步:找到是哪個子元素的事件
通過匿名回調函數的參數e用來接收事件對象,通過target獲取觸發事件的目標
- 第一步:給父元素綁定事件