我想在删除包含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();
});