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');});
すべてのブラウザでこのタスクを効率的に実行できるアイデアや既製のスニペットはありますか?? 解決策が現れることを願っています, 永遠に感謝.