Javascript Jquery off()在不使用';不再存在
我有一个Javascript Jquery off()在不使用';不再存在,javascript,jquery,ajax,iframe,Javascript,Jquery,Ajax,Iframe,我有一个iframe,内容是通过ajax加载的,而不是通过内容位置加载的。这是WordPress自定义程序预览iframe。它有点像jquerymobile,iframe中的页面会闪烁并加载新内容。也就是说,我不能为这个iframe使用加载和卸载事件,我必须将一个点击事件监听器绑定到它的内容 所以我想出了一个模拟加载事件的主意。我将向加载在iframe中的页面添加javascript,当文档准备就绪时,它执行iframe父函数,然后该函数可以将事件侦听器绑定到新的iframe内容 但是我怎样才能
iframe
,内容是通过ajax加载的,而不是通过内容位置加载的。这是WordPress自定义程序预览iframe
。它有点像jquerymobile,iframe
中的页面会闪烁并加载新内容。也就是说,我不能为这个iframe
使用加载和卸载事件,我必须将一个点击事件监听器绑定到它的内容
所以我想出了一个模拟加载事件的主意。我将向加载在iframe
中的页面添加javascript,当文档准备就绪时,它执行iframe
父函数,然后该函数可以将事件侦听器绑定到新的iframe
内容
但是我怎样才能解开它,这样我就不会有任何内存泄漏?我尝试在加载的页面中添加卸载事件侦听器,但奇怪的是,卸载事件在下一个页面加载之后运行,因此具有事件侦听器的内容已经不存在了
因此,基本上我无法在内容从DOM中消失之前off()
iframe内容。我必须off()
当它们不在时,我该怎么做
编辑:
我想我已经解决了。只需将内容存储在变量中。看来内存不再泄漏了
var iframeContents;
this.iframeLoadEmulation = function () {
if (typeof iframeContents !=='undefined') {
console.log('unbinding old content');
iframeContents.off();
iframeContents=null;
}
iframeContents=$('#customize-preview').find('iframe').contents();
iframeContents.on('click', function(){ console.log('click'); });
}
我说对了吗?这是一个好代码还是有更好的方法 您是否尝试过在卸载前执行
?是的,它根本不执行。您尝试过在卸载前执行吗?是的,它根本不执行。您尝试过在卸载前执行吗?是的,它根本不执行。