如何手动禁用被调用的插件?

时间:2012-09-17 09:28:57

标签: javascript jquery

我有一个网站接近完成,我现在正在修复一些小错误。开发页面可以在this page找到,并且使用了一些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; }

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

通常,插件,尤其是在其他地方存储数据或在不同位置创建DOM元素的插件,提供destroy选项。如果你没有,a)它不需要或b)插件编码不好 - 你要么需要挖掘并修复它,要么使用不同的插件。