我正在处理一个div(父),它有两个其他div(菜单和内容),如下所示:
<div id="parent">
<div id="menu"></div>
<div id="content"></div>
</div>
内容div中加载的内容是一个html文件,它具有一些javascript函数,例如每5秒重新加载其内容的自动刷新 .
$(document).ready(function () {
setInterval(function () {
grid.reloadDefaultContent(); //this reloads the content on content div.
}, 5000);
}
页面上有一些链接将不同的内容加载到内容div中 . 到目前为止一直很好,直到我回到具有自动刷新功能的"home," . 问题是自动刷新从未停止过,现在我点击再次回到家中,该功能正在运行两次(或者我改变页面并返回主页的次数),将会话放在上面 . 我正在使用jQuery $.load()
加载页面 .
关于如何使setInterval实例的任何想法只运行一次?
编辑:在看完我自己的问题之后,我看到它有点不清楚 . 我的主要问题是,当我回到家时,我的第一个setInterval实例已经运行,并且第二个实例启动,使得5秒的自动刷新变得更快,每次我都会越来越快更改页面并返回主页 . 这不是我想要的行为 . 我需要的是当我更改div上的内容时停止setInterval的实例,并在我回到主页时重新启动它 .
5 回答
这应该这样做:
它只会启动间隔计时器的一个实例 .
如果你只想运行一次,为什么不使用“setTimeout()”呢?
试试这个:
另一种选择是始终重新启动计时器:
哪一个更好取决于你的情况 .
如果您希望代码只运行一次,则应使用setTimeout()而不是
setInterval()
.用户jQuery的.one()函数
在不更改执行
setInterval
的源页面的情况下,您唯一的选择似乎是破解grid.reloadDefaultContent
函数以使其仅运行一次 . 如果没有看到grid
的定义,就不可能提供任何建议 .