我有点困惑,当我尝试在 IE7、IE9、Chrome 18、Firefox 12 中将函数绑定到事件(如点击)时效果很好,但是当我尝试删除事件的关联函数时,只有 IE7和 Firefox 能够解除附加功能。这是我正在使用的代码,我做错了什么?
bindEvent:function(el,evtType,fn){
if(el.addEventListener){
el.addEventListener(evtType,fn,false);
} else {
if(el.attachEvent){
var _el=el;
var f = function(){fn.call(_el,window.event);}
el.attachEvent( 'on'+evtType, f);
el[fn.toString()+evtType]=f;
//el.attachEvent('on'+evtType,fn) ;
} else {
el['on'+evtType]=fn;
}
}
return el;
},
removeEvent: function(el,evtType, fn ) {
if( el.removeEventListener){
el.removeEventListener( evtType, fn, false );
}else if(el.detachEvent){
el.detachEvent('on'+evtType,el[fn.toString()+evtType]);
el[fn.toString()+evtType]=null;
}else{
el['on'+evtType]=function(){};
}
return el;
}
我的测试代码是:
var a = document.getElementById('just_a_div');
bindEvent(a,'click',function(){alert('Hi There');});
并尝试删除我使用几乎相同的:
removeEvent(a,'click',function(){alert('Hi There');});
任何可以在所有浏览器上有效执行此任务的想法或一些预制片段?希望有解决办法,万分感激。