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”是一个类似于我上面使用的“events”的数组。

那么有没有办法做这样的事情?

谢谢!

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);
   })
});

您将选择器和事件名称保存在数组中,以便以后访问它们。并简单地一一删除处理程序。可能不是最有效的,但它有效。

于 2012-10-09T10:11:54.223 回答