一.常見的實現事件的方式html
(1)html 中 onclick 屬性 ;如<button onclick ="test()">jquery
(2)js 中 onclick事件,如 document.getElementById("id").onclick=function(){};瀏覽器
(3)W3C標準的addEventListener/removeEventListener,如document.getElementById("id").addEventListener("click",test,false); false 爲事件捕獲,true爲事件冒泡;框架
(4)微軟attachEvent/detachEvent,如document.getElementById("id").attatchEvent("onclick",test);代理
推薦使用addEventListener,兼容性好,功能強大,代碼結構清晰code
二.事件流:事件的執行順序,包括 冒泡,目標,捕獲;htm
三.jquery 事件綁定方式對象
(1)bind 匹配元素綁定,無過濾 浪費資源事件
(2)live 匹配元素綁定,後繼添加的新元素也如此,適用於將來元素 已經被淘汰內存
(3)deleget 匹配元素綁定, 有過濾,適用於將來元素 來處理動態添加的元素
(4)on 實現了上面的功能,適用於將來元素 (推薦)
四.dojo事件綁定方式dojo/on:dojo從新實現了瀏覽器的信息發佈與接收機制,統一了事件的綁定方式,充分考慮到了內存泄漏,兼容性等問題
(1)on(button,"click".test);支持w3c的對象屬性和方法,例如stopPropagation,preventDefault,_handle_.remove
(2)on方法,如query(’.clickable‘).on("click",test)
(3)事件代理:子元素的事件能夠經過父元素來響應執行;on(
parent element, "
selector:
event name",
handler)
. 如on(parrentDom,'.clickable:click',test)
(4)自定義事件(pub/sub框架):pub發佈topic和參數,sub監聽topic和接收參數,如topic.publish('alert','hello');topic.subscribe('alert',fucntion(text){}); 應用:當前事件解決了不了的它來作
(5)connect是舊方法
五.arcgis事件
(1)on方法,如map.on('load',test)
(2)connect,如connect.connect(map,'click',test)
對比:on比較好,一是connect是dojo舊方法,要淘汰;二是,on方法代碼簡潔,與其它語言的綁定事件方式相近;三是,on方法能夠得到evt.target,這個對象信息是可信有用的
(3)事件冒泡與阻止,如event.stop(event);