一、事件綁定
1. $("target").bind/unbind("事件名",handler)
$("target").bind/unbind("事件名",handler)
同addEventListener()
.unbind三種重載:
.unbind("事件名",handler) 移除當前元素上,指定事件上的名為handler的處理函數。
.unbind("事件名") 移除當前元素上,指定事件上的所有處理函數
.unbind() 移除當前元素上,所有事件的監聽
2. $("target").one("事件名",handle)
$("target").one("事件名",handle),同bind
區別: 只觸發一次,觸發后,自動解綁
3. $("parent").delegate("selector","事件名",handler)
$("parent").delegate("selector","事件名",handler)
原理: 簡化利用冒泡:
1. 獲得目標元素: this->e.target
2. 篩選目標元素: 第一個參數: "selector"
只有滿足"selector"要求的元素,才能觸發事件
bind 與 .delegate 的區別
1. .bind直接綁定在目標元素上
.delegate 綁定在父元素上
2. 監聽個數: .bind 監聽個數多——每個目標元素都添加
.delegate 監聽個數少——只給父元素添加一個
3. 新增子元素自動獲得事件處理函數:
.bind 只能對現有元素添加事件監聽
新增元素無法自動獲得監聽
.delegate 只要父元素下的元素,無論現有,還是新增,都能自動獲得父元素上統一的事件監聽
4. .on/off
1. 代替bind: .on("事件名",handler) 同bind
2. 代替delegate: .on("事件名","selector",handler)同delegate
5. .事件名
此方法僅對常用的事件提供了終極簡化
6.頁面加載后執行步驟
1. DOMContentLoaded: 僅DOM內容加載完,就可提前執行
DOM內容僅包括: html和js
提前觸發:只要不依賴於css和圖片的所有操作都可在DOM內容加載后,提前觸發
比如: 事件綁定
jq: $(document).ready(()=>{
//DOM內容加載后,就可提前執行的操作
//比如: 事件綁定
})
簡化: $().ready(()=>{
更簡化: $(()=>{...})
注意:寫在body結尾的script中的代碼默認就是DOM內容加載后自動執行
2. window.onload 在所有頁面內容加載完成后自動觸發
包括: html,css,js,圖片
使用場景:js代碼必須依賴css或圖片才能執行時
二、鼠標事件和模擬觸發
1.鼠標事件
mouseover mouseout 進出子元素,會頻繁觸發父元素的處理函數
mouseenter mouseleave 進入子元素,不再頻繁觸發父元素的處理函數
簡寫: 如果同時綁定鼠標進入和移出事件時,可簡寫為hover
$(...).hover(
e=>{...} //給mouseenter
,
e=>{...} //給mouseleave
)
更簡化: 如果兩個處理函數,可用toggle統一為一個處理函數,則只需要傳一個參數即可
2.模擬觸發
雖然沒有觸發事件,但是依然可用程序模擬執行元素的事件處理函數
語法: $(...).trigger("事件名")
更簡單: $(...).事件名()
