木易涛童鞋
2016-06-07 18:33
var eventUtil = {
//添加句柄
addHandler:function(element, type, handler) {
if(element.addEventListener) {
element.addEventListener(type, handler, false); //如果支持DOM2级
}
else if(element.attachEvent) {
element.attachEvent('on'+type, handler); //支持IE
}
else {
element['on'+type] = handler; //DOM0级
}
},
//删除句柄
removeHandler:function(element, type, handler) {
if(element.removeEventListener) {
element.removeEventListener(type, handler, false);
}
else if(element.detachEvent) {
element.detachEvent('on'+type, handler);
}
else {
element['on'+type] = null;
}
}
}
//调用封装好的对象
eventUtil.addHandler(btn1, 'click', showMe);
eventUtil.removeHandler(btn1, 'click', showMe);
eventUtil.addHandler(btn2, 'click', function(){alert('我是' + this.value)});
eventUtil.removeHandler(btn2, 'click', function(){alert('我是' + this.value)});//这个没反应???
因为,removeEventListener()移除时传入的参数与添加处理程序时使用的参数相同。匿名函数无法移除。
element, type, handler,这三个参数,element:要在该元素上清除事件.type:事件类型.是键盘事件或是鼠标事件,handler:事件名称.函数的名称。
function Alert(){alert('我是' + this.value)}
eventUtil.addHandler(btn2, 'click', Alert); //添加
eventUtil.removeHandler(btn2, 'click', Alert); //删除
DOM事件探秘
99544 学习 · 1197 问题
相似问题