カスタム イベント: ユーザーはイベント タイプ (実際には文字列) を指定し、このタイプのイベントのイベント処理関数を指定できます。呼び出し時に、複数の Find からイベント処理関数を登録できます。イベント処理関数内でそれを呼び出してください。
function EventTarget(){ this.handlers={}; } EventTarget.prototype={ constructor:EventTarget, addHandler:function(type,handler){ if(typeof this.handlers[type]=='undefined'){ this.handlers[type]=new Array(); } this.handlers[type].push(handler); }, removeHandler:function(type,handler){ if(this.handlers[type] instanceof Array){ var handlers=this.handlers[type]; for(var i=0,len=handlers.length;i<len;i++){ if(handler[i]==handler){ handlers.splice(i,1); break; } } } }, trigger:function(event){ if(!event.target){ event.target=this; } if(this.handlers[event.type] instanceof Array){ var handlers=this.handlers[event.type]; for(var i=0,len=handlers.length;i<len;i++){ handlers[i](event); } } } }
addHandler メソッドはイベント ハンドラーの追加に使用され、removeHandler メソッドはイベント ハンドラーの削除に使用されます。すべてのイベント ハンドラーは属性ハンドラーに格納および管理されます。イベントをトリガーするには、トリガー メソッドを呼び出します。このメソッドは、少なくとも type 属性を含むオブジェクトをパラメーターとして受け取ります。トリガーされると、handlers 属性の type に対応するイベント ハンドラーを検索します。コードを書いてテストします。
りー