我使用jQuery和history.js来管理部分页面之间的动态转换,从而避免重新加载整个文档。有些部分页面调用自己独特的javascript文件。虽然页面之间的转换工作良好,但是在调用它的部分页面被动态替换之后,执行的javascript的残余仍然处于活动状态。
如何卸载 javascript ?
更精细的细节
主模板
我的主模板(用于所有页面)可以被认为是一个简单的模板:
<html>
<head>
<script>
//scripts to manage asynchronous loading of partial-pages into #content div
</script>
</head>
<body>
<div id="content"></div>
</body>
</html>用户配置文件
在# div中呈现的部分页面用于用户的配置文件
<script src="profile.js"></script>
<form>
<input type="file" name="profile-picture">
</form>profile.js的内容类似于:
$(function() {
$('input').change(function() {
// upload profile picture asynchronously
});
});用户设置
加载在主模板的#content div中的另一个部分页面是用户的设置
<script src="settings.js"></script>
<form>
<input type="text" name="first-name">
<input type="text" name="last-name">
</form>settings.js的内容类似于:
$(function() {
setInterval(function() {
// auto-submit form every 10 seconds
$('form').submit();
}, 10000);
}
});问题
有什么更好的方法来实现动态部分页面加载/卸载的效果,同时允许每个部分页面特定于页面的脚本呢?
谢谢!
发布于 2013-11-01 01:04:41
Firstly...once你加载javascript...you不能卸载它
setInterval问题将需要使用clearInterval
在初始化setiIterval;时,声明一些使其作为全局变量相当独特的深奥名称,确保在使用它之前在$(document).ready之外声明它。
var my_super_form_submitter
$(document.ready)function(){...
my_super_form_submitter=setInterval(func.....然后,无论何时加载新页面。
if(my_super_form_submitter)
clearInterval(my_super_form_submitter)至于与其他methods....you的冲突,则可以为特定于页面的代码采用内容类协议。在每次页面加载时,更改内容div...then类将在选择器中使用该类用于jQuery。
发布于 2013-11-01 00:59:44
关于第一个问题:
问题是哪些函数在替换包后继续运行。您提到的SetInterval使用js定时器,简单地替换包不会自动停止计时器。在替换之前,您应该清除通过setInterval启动的所有计时器。
例如。
$(function() {
var timer = setInterval(function() {
// auto-submit form every 10 seconds
$('form').submit();
}, 10000);
}
function uninitialize(){
clearInterval(timer);
}只需在替换包之前调用uninitialize即可,它应该可以工作。
UnfortunatelyI不知道如何正确地加载部分页面,但我希望它能对您有所帮助(:
https://stackoverflow.com/questions/19719147
复制相似问题