0

これが私がすることです。

jQuery を使用して、以下のようにイベントをコントロールに接続します。

$("#id").click(function(){ 
   //do something 
});
$("#id-1").click(function(){ 
   //do something 
});
$("#id-2").click(function(){ 
   //do something 
});

私が今欲しいのは、ページのアンロード時にこれらのイベントを動的にバインド解除できるようにすることです。

$(window).unload(function(){
   //unbind events here
});

以下を使用して、すべてのイベントを配列に収集します。

events = new Array();
events.push($("#id").click(function(){ 
   //do something 
}));

アンロード時に、「イベント」配列を反復処理し、すべてのイベントをコントロールから切断します。

以前は以下のようにしていましたが、それは道場でした:

dojo.forEach(this.connections, dojo.disconnect);) 

上記のコード ブロックでは、「this.connections」は、上で使用した「イベント」のような配列です。

それで、そのようなことをする方法はありますか?

ありがとうございました!

4

1 に答える 1

0

これが私がそれをする方法です...

   events = new Array();
   events.push({selector:"#id",eventName:"click"});

その後

$(window).unload(function(){
   $.each(events,function(elem){
       $(elem.selector).off(elem.eventName);
   })
});

セレクターとイベント名を配列に保存して、後でアクセスできるようにします。そして、ハンドラーを1つずつ削除するだけです。最も効率的ではないかもしれませんが、それは機能します。

于 2012-10-09T10:11:54.223 に答える