javascript:删除元素后停止setInterval

我想在删除包含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响应数据包含带有interval 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 – JS clearInterval或window.clearInterval?


下一篇:在javascript中关闭setInterval函数