和 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);
看看赛斯和我的草图是否对你有帮助。如果没有,请给我们更多细节。