0

我有一个接近完成的网站,现在正在修复一些小错误。可以在此页面上找到开发页面,并且在使用一些 jquery 插件时遇到了一点问题。

该站点的主要部分是持久的,并使用页面控制器来处理 ajax 导航和插件实例化。但我发现,在站点周围单击几下后,即离开页面并返回,当再次调用页面函数时,它们将中断并且所有 javascript 将停止。

我想知道,是否可以清除当前处于活动状态的已定义“活动事件”。在有一条鱼之后,我发现分配一个变量然后给该变量函数,但没有鱼。举个例子,我怎么能去禁用以下简化:

$('#carousel-awards').infiniteCarousel();
$('#another-test').timelinr();

这是两个没有内置“关闭”方法的 jquery 插件。从本质上讲,我想要一个垃圾收集器,因为一旦用户离开使用上述两个功能的页面,页面 HTML 就会暂时失效。

为了清楚起见,我尝试了以下方法:

1. $('#carousel-awards').unbind('infiniteCarousel');

2: $('#carousel-awards').off('infinitCarousel');

3: $('#carousel-awards').infiniteCarousel = function() { return false; }

4: var test;
   test = $('#carousel-awards').infiniteCarousel();
   test = function(){ return false; }

感谢您花时间阅读我的问题

4

2 回答 2

1

这取决于插件。但是,如果它使用 jQuery UI 小部件系统,您很可能会使用.infiniteCarousel('destroy').timelinr('destroy')从元素中删除这些小部件。

于 2012-09-17T10:46:40.597 回答
0

我不确定这些插件,但通常调用.remove()元素也会删除附加的处理程序、数据对象等;使它们可被垃圾收集。

通常插件,尤其是那些在其他地方存储数据或在不同位置创建 DOM 元素的插件,提供了一个destroy选项。如果您没有,a)不需要它或b)插件编码不正确-您要么需要深入研究并修复它,要么使用其他插件。

于 2012-09-17T10:53:37.173 回答