Seth のように、イベントを削除するためのパターンがあります — ハンドルを配列で収集します (疑似コード):
var handles = [
dojo.connect(...),
dojo.connect(...),
dojo.connect(...)
];
動的に接続する場合は、それらを収集するだけです:
var handles = [];
...
handles.push(dojo.connect(...));
...
handles.push(dojo.connect(...));
通常の方法でいくつかのイベントを接続する場合、次を使用できますdojo.map()
。
var handles = dojo.map(["click", "ondblclick"], function(evt){
return dojo.connect(node, evt, ...);
});
きちんとした部分は、後で便利なワンライナーでそれらすべてを切断できることです。
dojo.forEach(handles, dojo.disconnect);
あなたの場合、 Seth で示されているような辞書を使用して、同じことを実現できます。
var handles = {};
...
handles[node.id] = dojo.map(["click", "ondblclick"], function(evt){
return dojo.connect(node, evt, ...);
});
後で、次のようにハンドラーを切断できます。
dojo.forEach(handles[node.id], dojo.disconnect);
セスと私のスケッチがあなたの場合に役立つかどうか見てください. そうでない場合は、詳細をお知らせください。