【发布时间】:2012-05-20 06:23:21
【问题描述】:
我想在删除包含setInterval函数的div后自动执行clearInterval函数,这个div是ajax响应的结果,因为它在删除div后不会自行停止。
$('#element').mouseover(function(){
$.post('ajax/ajax.php', function(data) {
$('<div id="tooltip'></div>").appendTo("div#main");
$('#tooltip').html(data);
$('#tooltip').show();
});
}).mouseout(function(){
clearInterval(intervalId);
$('#tooltip').empty();
$('#tooltip').remove();
});
ajax 响应 data 包含带有间隔 Id 处理程序的 javascript setInterval 函数:
var intervalId = window.setInterval(pics_load, 3000);
我尝试使用Jquery unload,但同样的问题:
$('#tooltip').unload(function(){
clearInterval(intervalId);
}
我也尝试在 ajax 响应中使用它:
$(window).unload(function(){
clearInterval(intervalId);
}
【问题讨论】:
-
如果我们看不到它是如何声明的,就很难知道如何清除间隔。
-
intervalId 是否在块范围内声明?如果是,您将失去它。在 clearInterval 之前检查 intervalId 是否未定义
-
我在ajax响应中声明,在ajax调用后执行
-
我建议不要在 ajax 响应中声明这样的东西......他们只会混淆事情
-
我能看到 AJAX 代码吗?您可能想尝试在全局范围内设置 intervalId - 即 window.intervalId = setInterval(blah);然后 clearInterval(window.intervalId)
标签: javascript jquery setinterval clearinterval