attachEvent与addEventListner,实现do

2017-03-24  本文已影响0人  mr_zhi

attachEvent与addEventListner,实现dom的上同一事件的多次绑定

我们有时候会在一个元素上添加多次同一事件,然而普通绑定会导致只执行最后一次

obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;

只会执行method3

obj.attachEvent('onclick',method1);
obj.attachEvent('onclick',method2);
obj.attachEvent('onclick',method3);

执行顺序是method3,method2,method1
可惜,这是微软的私人方法
主流浏览器都支持W3C标准的addEventListener方法

obj.addEventListener('onclick',method1);
obj.addEventListener('onclick',method2);
obj.addEventListener('onclick',method3);

执行顺序是method1,method2,method3

因此,我们可以写个函数来做下兼容处理

function addHandleEvent(obj, type, func) {

    if (obj.attachEvent) {
        obj.attachEvent('on' + type, func);
        return true;
    } else if (obj.addEventListener) {
        obj.addEventListener(type, func, false);
        return true;
    } else {
        obj['on' + type] = func;
    }
}

下边就可以安心的使用了:

obj.addHandleEvent(obj,'click',method1);
obj.addHandleEvent(obj,'click',method2);
obj.addHandleEvent(obj'click',method3);
上一篇下一篇

猜你喜欢

热点阅读