我已经看过类似于这个问题的所有其他答案,但我无法让它们适合我的场景。如何在slidetoggle()上停止setInterval()然后重新启动?
我有一个页面,其中包含15个自动刷新结果的边栏,这很好。 有一个链接可将外部页面加载到带有叠加层的div中。那么这个新的div
与结果的完整清单也会自动刷新,同时其打开。 (不希望两个div在后台自动刷新)
在此full list
div每个结果都有一个jquery slideToggle()
函数来显示更多信息。
我正在尝试(和失败)做的是使自动刷新停止,而slideToggle
正在显示信息,否则当页面刷新时返回到display:none
。
这里是我的最新尝试:
HTML
main page has div to load into...
<div id="full_list"> loading... </div>
外部页面的完整列表
<div class="events_list"> <!--container for events -->
<ul><li>
<div class="full_event"> <!--each event in a list-->
#1<b> 500 m race </b> <!--this bit always seen -->
<div class="event_slide"> <!--this div is slideToggled() -->
<b>500m race </b><br>
<div class="evntdescription">
run 500mrun 500mrun 500mrun 500mrun 500mrun 500m
</div>
</div>
</div>
</li></ul>
</div>
现在我尝试的JavaScript
var refreshData;
var infodisplay = $('.event_slide').css('display');
function autoRefresh() {
if(infodisplay == 'none')
{
refreshData = setInterval(function() {
$('#full_list').load('eventlist.php');
}, 1000);
}
else
{
clearInterval(refreshData);
}
};
$("#view_events").click(function(){ //this opens up the div //
overlay.fadeIn(1000).appendTo(document.body);
$('#full_list').load('eventlist.php'); //loads external page//
$('#full_list').fadeIn(800, function() {
autoRefresh(); //start the auto refresh/
$("body").on("click",".full_event", function(e){
$(this).children('div.event_slide').slideToggle(300, function() {
autoRefresh(); //thought it might work if i add the function
//here as well //
});
});
});
$("body").on("click","#close", function(e){ //closes div//
overlay.fadeOut(300);
$("#full_list").fadeOut(300);
});
return false;
});
基本上它什么都不做。如果我摆脱了第二个autoRefresh
函数,我已经使其工作,但它不会停止功能。只是不断刷新,也不知道如何停止刷新,当我关闭div也。 让我知道你是否需要更多信息。
thanx!
难道在这里划定范围的问题?尝试可能更改setInterval()为window.setInterval()和window.clearInterval() – SneakyMummin 2013-05-04 11:13:32
相同尝试它,没有工作,对不起。 – dragonvsphoenix 2013-05-04 12:35:04