标签:
IE提出的是事件冒泡流,而Netscape提出的是事件捕获流。
1 //绑定事件 2 var btn = document.getElementById(‘mybtn‘); 3 btn.onclick = function () { 4 console.info(this.id) //mybtn 5 } 6 7 //删除事件 8 var btn = document.getElementById(‘mybtn‘); 9 btn.onclick = null;
target.removeEventListener(type, listener[, useCapture]);
type: 事件名称;listener: 事件的回调;useCapture:true,冒泡,false,捕获,默认false
DOM2级可以为一个元素绑定多个回调,按照绑定的顺序依次执行。回调中的this为当前元素;removeEventListener的参数必须和addEventListener保持一致才可删除事件。
1 var EventUtil = { 2 addHandler: function (element, type, handler) { 3 if (element.addEventListener) { 4 element.addEventListener(type, handler, false); 5 } else if (element.attachEvent) { 6 element.attachEvent(‘on‘ + type, handler); 7 } else { 8 element[‘on‘ + type] = handler; 9 } 10 }, 11 removeHandler: function (element, type, handler) { 12 if (element.removeEventListener) { 13 element.removeEventListener(type, handler, false); 14 } else if (element.detachEvent) { 15 element.detachEvent(‘on‘ + type, handler); 16 } else { 17 element[‘on‘ + type] = handler; 18 } 19 } 20 }
1 var btn = document.getElementById(‘myBtn‘); 2 3 //方式一 4 btn.onclick = function (event) { 5 console.info(event.type); //‘click‘ 6 }; 7 8 //方式二 9 btn.addEventListener(‘click‘, function (event) { 10 console.info(event.type); //‘click‘ 11 }); 12 13 //方式三 14 <input type="button" value="click me" onclick="alert(event.type)"> //‘click‘
1 var btn = document.getElementById(‘mybtn‘); 2 3 //方式一 4 btn.onclick = function () { 5 var event = window.event; 6 console.info(event.type); //‘click‘ 7 }; 8 9 //方式二,也可以使用window.event来访问 10 btn.attachEvent(‘onclick‘, function (event) { 11 console.info(event.type); //‘click‘ 12 }); 13 14 //方式三 15 <input type="button" value="click me" onclick="alert(event.type)"> //‘click‘
event都有以下的属性和方法
1 var EventUtil = { 2 addHandler: function (element, type, handler) { 3 if (element.addEventListener) { 4 element.addEventListener(type, handler, false); 5 } else if (element.attachEvent) { 6 element.attachEvent(‘on‘ + type, handler); 7 } else { 8 element[‘on‘ + type] = handler; 9 } 10 }, 11 removeHandler: function (element, type, handler) { 12 if (element.removeEventListener) { 13 element.removeEventListener(type, handler, false); 14 } else if (element.detachEvent) { 15 element.detachEvent(‘on‘ + type, handler); 16 } else { 17 element[‘on‘ + type] = handler; 18 } 19 }, 20 getEvent: function (event) { 21 return event ? event : window.event; 22 }, 23 getTarget: function (event) { 24 return event.target || event.srcElement; 25 }, 26 //阻止默认事件 27 preventDefault: function (event) { 28 if (event.preventDefault) { 29 event.preventDefault(); 30 } else { 31 event.returnValue = false; 32 } 33 }, 34 //阻止捕获、冒泡 35 stopPropagation: function (event) { 36 if (event.stopPropagation) { 37 event.stopPropagation(); 38 } else { 39 event.cancelBubble = true; 40 } 41 } 42 }
标签:
原文地址:http://www.cnblogs.com/stonevina/p/4332859.html