1.事件函式
obj.on-事件名=fn
定義事件的時候,事件函式不會自動執行,當事件觸發的時候,會執行
2.事件物件
1)事件物件:當瀏覽器執行事件的時候,會將所有與事件相關的內容(滑鼠位置,觸發的目標等)封裝為乙個物件,並且在觸發事件的函式,在事件函式中進行傳遞
event
常見屬性:
clientx
clinety 滑鼠相對客戶端的位置
pagex
pagey 滑鼠相對於頁面的位置
type 事件型別
target 事件作用的節點物件
2)事件的相容性:
在低版本的ie和火狐上,事件傳遞機制不一樣,需要通過window.event來獲取事件
window.event||e
1. 事件繫結
新增事件的做法,若出現為同乙個節點繫結了同名的事件,會出現覆蓋效果。
addeventlistener(事件名,事件函式,isbubble)
isbubble :預設為false 事件是冒泡機制 true 事件為捕獲機制
注意:事件名沒有on字首
removeeventlistener(事件名,事件函式,isbubble)
注意:一定要保證移除事件時和新增事件時是同乙個事件函式
事件繫結相容性問題:在低版本ie中(ie 6/7/8)不支援addeventlistener和removeeventlistener,
在低版本ie中可以使用:
attachevent(事件名,事件函式) 繫結事件
detachevent 取消事件
注意:事件名 包含on字首
兩種事件繫結的區別:
1.addeventlistener:
事件名沒有on字首
可以選擇冒泡或者捕獲機制
this 指事件呼叫者
同名事件的執行順序:先新增先執行
2.attachevent
事件名需要新增on字首
不能選擇冒泡或捕獲的機制
this 指window物件
同名事件的執行順序:後新增先執行
事件繫結相容性寫法的封裝:
事件流:事件被觸發之後會在dom樹的節點之間傳遞
冒泡:事件由最具體的元素(事件的觸發者),層層向外傳遞(傳遞給父節點),直到window 物件停止
捕獲:事件由最外層元素(window),層層向內傳遞,直到最具體的元素
事件流機制有時候會對頁面效果造成一些影響,所以需要攔截事件的冒泡:
相容性寫法:
window.event?window.cancelbubble=true:e.stoppropagation()
攔截瀏覽器自帶的一些事件行為,例如:a超連結的跳轉等…
物件.事件名 return false
物件.addeventlistener() e.preventdefault()
物件.attachevent() e.returnvalue=false; retrun false;
右鍵事件:oncontextmenu
鍵盤事件:onkeydown onkeyup onkeypress
鍵盤事件的屬性:
key 在ie中不支援 鍵名稱
keycode 鍵碼
滾輪事件:
onmousewheel 標準瀏覽器和ie
物件.addeventlistener(「dommousescroll」,事件函式,false) 火狐
滾輪事件對:
wheeldelta 標準瀏覽器和ie 120 -120 下 120 上
detail 獲取 3
事件委託:事件新增元素父節點(原理:事件的冒泡機制)
將事件新增到父元素上,當事件發生時,父元素會找到對應觸發事件的子元素去處理,後期新增的子元素,依然有這個事件
on 的高階用法
針對自己處理機制中,不僅有on方法,還有根據on演變出來的live方法 1.7後去掉了 delegate方法等等。這些方法的底層實現部分 還是on方法,這是利用了on的另乙個事件機制委託的機制衍變而來的 委託機制 on events selector data handler eventobject...
python高階用法 Python高階用法
python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...
關於高階事件的使用
1.事件繫結 ie獨有下的繫結事件 attachevent 事件名,函式 反向執行,且乙個按鈕可執行多個事件的功能。detachevent 解除繫結 ff chorme下的繫結事件 addeventlistener removeeventlistener 解除繫結 2.捕獲事件 物件.addeven...