前导:如果一个按钮绑定了多个点击事件,那么点击按钮的时候只会执行最后一个点击事件,前面的点击事件都被覆盖了。那么如何为一个按钮绑定多个相同的事件,并且每个事件都会执行呢?
<!-- -->
绑定事件的方式:
addEventListener: chrome,firefox支持,IE8不支持
attachEvent: chrome,firefox不支持,IE8支持
my("dv").onclick == my$("dv")["onclick"]
方法名不同;
参数个数不同,addEventListener有三个参数,attachEvent有两个参数;
addEventListener中事件的类型没有 on,attachEvent中事件的类型有on;
chrome,firefox 支持 addEventListener ,IE8不支持;
chrome,firefox 不支持 attachEvent ,IE8支持;
事件中的 this 不同,addEventListener 中的 this 是当前绑定的对象;
attachEvent 中的 this 是 window。
如果使用 元素.onclick = function(){}; 的方式绑定对象的话,解绑的方式为 元素.onclick = null;
如果使用 元素.addEventListener("click", f1, false); 的方式绑定对象的话,解绑方式为 元素.removeEventListener("click", f1, false);
注意:这里面不能使用匿名函数,因为需要同一个事件处理函数,而两个匿名函数是两个不同的函数,所以需要使用命名函数。
如果使用 元素.attachEvent("onclick", f1); 的方式绑定对象的话,解绑方式为 元素.detachEvent("onclick", f1);
// 为任意元素绑定任意事件function addAnyEventListener(element, type, func) {
if(element.addEventListener) {
element.addEventListener(type, func, false);
} else if(element.attachEvent) {
element.attachEvent("on"+type, func);
} else {
element["on"+type] = func;
}}// 为任意元素解绑任意事件function removeAnyEventListener(element, type, funcName) {
if(element.removeEventListener) {
element.removeEventListener(type, funcName, false);
} else if(element.detachEvent) {
element.detachEvent("on"+type, funcName);
} else {
element["on"+type] = null;
}}
示例:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3350/viewspace-2802873/ ,如需转载,请注明出处,否则将追究法律责任。