我想将所有jQuery代码包装在一个名为init()的函数中。定义此函数,然后立即执行。然后,我也在窗口调整大小时使用init()。
$(document).ready(function(){
function init(){
...
$('.button').click(function(){
$(this).toggleClass('.active');
});
...
};
init();
$(window).resize(function(){
init();
});
});
麻烦的是每次窗口调整大小时都会创建一个新的事件监听器。当您尝试在点击时切换某些内容时,这会成为问题。如果有偶数个听众,则切换发生两次,使整个考验无效。
我的下一步是尝试在init()函数的开头取消绑定所有事件:
$('*').unbind();
这成功重置了所有事件绑定,并确保在调整窗口大小后只剩下一个侦听器。但是,它杀死了其他插件和文件中使用的任何其他jQuery代码。
我相信只解释我脚本事件的解决方案,可以通过命名空间来实现。但是,我不想让人们必须记住使用.on()和click.namespace',特别是如果他们喜欢使用.click(function(){。 ..});因此事件名称空间并不是真正需要的。
我真正想要的是一种基于插件级命名空间禁用所有事件的方法。有任何想法吗?至少,有没有办法扩展click函数以便正常运行,但是将它应用的所有选择器放入一个我可以在以后引用的数组中?
谢谢!