javascript:删除元素后停止setInterval

标签 javascript jquery setinterval clearinterval

我想在删除包含 setInterval 函数的 div 后自动执行 clearInterval 函数,这个 div 是 ajax 响应的结果,因为它在删除后不会自行停止分区

$('#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);
}

最佳答案

您是否尝试过使用 $.data 将 intervalId 存储在 #element 本身?

$('#element').mouseover(function() {
     var $this = $(this);
     $.post('ajax/ajax.php', function(data) {
         $('<div id="tooltip"></div>').appendTo("div#main");
         $('#tooltip').html(data);
         $('#tooltip').show();
         // save interval id here
         var intervalId = setInterval('pics_load', 3000);
         $this.data('intervalId', intervalId);
     });
}).mouseout(function(){
     // retrieve intervalId here
     var intervalId = $(this).data('intervalId');
     clearInterval(intervalId);
     $('#tooltip').empty();
     $('#tooltip').remove();
});

关于javascript:删除元素后停止setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671256/

相关文章:

javascript - 在加载 map 时打开一个弹出窗口

javascript - 为什么不修改字符串的每个字符?

javascript - Woocommerce:检测单击“添加到购物车”按钮的位置并运行不同的代码

javascript - jquery表单验证器不支持ajax,我可以让jquery在没有ajax的情况下进行验证,反之亦然

javascript - JQuery 可以在 .html 上工作,但不能在 .php 上工作

javascript - jQuery 扩展覆盖错误的值

javascript - 将 setInterval 函数时间保存在 yii2 的配置文件中

javascript - 如何根据区域坐标显示一个div

javascript - 为什么 clearInterval 对我的代码不起作用?

vue.js - 如何在 Vuex 中清除间隔