Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何停止slidetoggle()上的setInterval(),然后重新启动?_Javascript_Jquery_Setinterval - Fatal编程技术网

Javascript 如何停止slidetoggle()上的setInterval(),然后重新启动?

Javascript 如何停止slidetoggle()上的setInterval(),然后重新启动?,javascript,jquery,setinterval,Javascript,Jquery,Setinterval,我已经看过了与这个问题类似的所有其他答案,但我无法让它们适合我的情景 我有一个页面,有一个侧边栏,其中包含15个自动刷新的结果,这很好。 有一个链接可以将外部页面加载到带有覆盖的div中。然后,这个新的div以及完整的结果列表在打开时也会自动刷新。(不希望两个div在后台自动刷新不成功) 在这个full listdiv中,每个结果都有一个jquery slideToggle()函数来显示更多信息 我正在尝试(但失败)的是,当此幻灯片切换显示信息时,自动刷新停止,否则当页面刷新时,它会返回到显示:

我已经看过了与这个问题类似的所有其他答案,但我无法让它们适合我的情景

我有一个页面,有一个侧边栏,其中包含15个自动刷新的结果,这很好。 有一个链接可以将外部页面加载到带有覆盖的div中。然后,这个新的
div
以及完整的结果列表在打开时也会自动刷新。(不希望两个div在后台自动刷新不成功)

在这个
full list
div中,每个结果都有一个
jquery slideToggle()
函数来显示更多信息

我正在尝试(但失败)的是,当此
幻灯片切换
显示信息时,自动刷新停止,否则当页面刷新时,它会返回到
显示:无

以下是我的最新尝试:

html

主页面有要加载到的div。。。
加载。。。
包含完整列表的外部页面


  • #1500米赛跑 500米赛跑
    跑500跑500跑500跑500跑500米
现在我尝试的javascript

var刷新数据;
var infodisplay=$('.event_slide').css('display');
函数自动刷新(){
如果(infodisplay==“无”)
{
refreshData=setInterval(函数(){
$('full#u list').load('eventlist.php');
}, 1000);
}     
其他的
{
clearInterval(刷新数据);
}
};      
$(“#查看_事件”)。单击(函数(){//这将打开div//
overlay.fadeIn(1000).appendTo(document.body);
$(“#完整列表”).load('eventlist.php');//加载外部页面//
$('full#u list').fadeIn(800,function(){
autoRefresh();//启动自动刷新/
$(“body”)。在(“click”、“.full_事件”上,函数(e){
$(this).children('div.event_slide')。slideToggle(300,function(){
autoRefresh();//我想如果我添加这个函数可能会起作用
//这里也是//
});
});
});
$(“body”)。在(“click”、“#close”上,函数(e){//closes div//
叠加衰减(300);
$(“完整列表”)。淡出(300);
}); 
返回false;
});
基本上它什么都不做。如果我去掉了第二个
autoRefresh
函数,我已经让它工作了,但它不会阻止该函数继续运行。只是不断刷新,也不知道在我关闭div时如何停止刷新。 如果你需要更多信息,请告诉我


塔克斯

异步加载完成后,尝试清除间隔:

function autoRefresh () {
    refreshData = setInterval(function() {
    $('#full_list').load('eventlist.php', function() {
        clearInterval(refreshData);
    });
}, 1000);  };

好吧,不管怎么说,我都明白了。谢谢你,如果你这么做了

切换完成后,将
if
语句放入函数中

唯一的缺点是,如果它在刷新的同时仍然“切换”,它将刷新。直到切换完成,才会清除间隔。我不知道该怎么解决这个问题。 将代码更改为:

var refreshData;

function autoRefresh() {            
       refreshData = setInterval(function() {          
                $('#full_list').load('eventlist.php');
                }, 10000);
                };   

$("#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() {

     if($(this).css('display') == 'none') 
        {$('#full_list').load('eventlist.php');
        autoRefresh();
        }
        else
        {
        clearInterval(refreshData);
        };

    });
    });

    });

    $("body").on("click","#close", function(e){ //closes div//
        overlay.fadeOut(300);
        $("#full_list").fadeOut(300);
        }); 

    return false;
    });

这可能是范围界定的问题吗?尝试将setInterval()更改为window.setInterval(),并将其更改为window.clearInterval()尝试了,但没有成功,对不起,我不明白。设置好后会立即停止吗?你能更具体地说一下我改变了什么,以及我把代码放在了什么地方吗?正如在我希望它停止只有当信息是可见的。塔克斯