我有一个网站接近完成,我现在正在修复一些小错误。开发页面可以在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; }
感谢您花时间阅读我的问题
答案 0 :(得分:1)
这取决于插件。但是,如果它使用jQuery UI小部件系统,您很可能会使用.infiniteCarousel('destroy')
和.timelinr('destroy')
从元素中删除这些小部件。
答案 1 :(得分:0)
我不确定这些插件,但通常在元素上调用.remove()
也会删除附加的处理程序,数据对象等;使它们可以收集垃圾。
通常,插件,尤其是在其他地方存储数据或在不同位置创建DOM元素的插件,提供destroy
选项。如果你没有,a)它不需要或b)插件编码不好 - 你要么需要挖掘并修复它,要么使用不同的插件。