人々はJSでのイベント監視についてさらに使用しますが、ブラウザがAddEventListenerとAttachEventをサポートするかどうかを判断することに過ぎません。オンラインでイベント監視を検索する方法はたくさんありますが、一部はあまり完璧ではありません。イベントのリスニングを追加する場合、次の方法はイベントのリスニングを追加する場合も同じですが、イベントバインディングのキャンセルでいくつかの手術が行われ、匿名機能の使用がサポートできるようになるため、バインディングイベントの場合、関数に個別に名前を付ける必要がなくなります。
メインコード:
コードコピーは次のとおりです。
/*バインディングイベントとバインディングのない*/
var handlehash = {};
var bind =(function(){
if(window.addeventlistener){
return function(el、type、fn、capture){
el.addeventlistener(type、function(){
fn();
handlehash [type] = handlehash [type] || [];
handlehash [type] .push(arguments.callee);
}、 捕獲);
};
} else if(window.attachevent){
return function(el、type、fn、capture){
el.Attachevent( "on" + type、function(){
fn();
handlehash [type] = handlehash [type] || [];
handlehash [type] .push(arguments.callee);
});
};
}
})();
var unbind =(function(){
if(window.addeventlistener){
return function(el、type){
if(handlehash [type]){
var i = 0、len = handlehash [type] .length;
for(i; i <len; i += 1){
el.RemoveEventListener(type、handlehash [type] [i]);
}
};
};
} else if(window.attachevent){
return function(el、type){
if(handlehash [type]){
var i = 0、len = handlehash [type] .length;
for(i; i <len; i += 1){
el.detachevent( "on" + type、handlehash [type] [i]);
}
};
};
}
})();
原則分析:
HandleHashはハッシュテーブルを行い、イベントの関数をキャッシュします。 handlehash ['event name']は、複数のイベントリスニング方法を追加する配列です。どのイベントがバインドされていない場合は、ハンドルハッシュ['event name']の配列を繰り返して削除します。
使用:
コードコピーは次のとおりです。
bind(obj、 'click'、function(){
アラート( 'クリック');
});
unbind(obj、 'click');