Jquery 如何停止设置间隔结果值闪烁
我有一个使用Jquery 如何停止设置间隔结果值闪烁,jquery,ajax,Jquery,Ajax,我有一个使用setInterval的简单打印功能。单击第一个p时,正确显示“第一个”值,但单击第二个值时闪烁。第一个和第二个值在闪烁的情况下连续打印。这是我的问题。请帮助我停止闪烁并正确打印第二个值 $(文档)。在('click','p',function()上{ var key=$(this.html(); setInterval(函数(){ $('#demo').load('e1.php?hash='+key); }, 200); //e1.php() }); 首先 第二 每次单击都会创
setInterval
的简单打印功能。单击第一个p
时,正确显示“第一个”值,但单击第二个值时闪烁。第一个和第二个值在闪烁的情况下连续打印。这是我的问题。请帮助我停止闪烁并正确打印第二个值
$(文档)。在('click','p',function()上{
var key=$(this.html();
setInterval(函数(){
$('#demo').load('e1.php?hash='+key);
}, 200);
//e1.php()
});
首先
第二 每次单击都会创建一个新的重复性回调。因此,单击一次之后,您就可以反复加载该
键了;第二次单击后,该键也会反复加载,这两个键混乱地混合在一起。第三次单击会将第三次循环回调添加到混合中
如果您只想在短暂延迟后发生一次,请使用setTimeout
,而不是setInterval
:
$(document).on('click', 'p', function(){
var key = $(this).html();
setTimeout(function() { // Just do it *once*
$('#demo').load('e1.php?hash='+key);
}, 200);
});
如果希望它重复出现,但仅使用新的键
,则需要存储上一个计时器的句柄,并在启动新的重复出现计时器之前将其取消:
var loadHandle = 0; // 0 is an invalid handle we can clear safely
$(document).on('click', 'p', function(){
clearTimeout(loadHandle);
var key = $(this).html();
loadHandle = setInterval(function() {
$('#demo').load('e1.php?hash='+key);
}, 200);
});
或者,只需将最近的密钥存储在闭包外部,以便间隔将其拾取:
var key = null;
$(document).on('click', 'p', function(){
if (key === null) {
// First click, start the recurring callback
setInterval(function() {
$('#demo').load('e1.php?hash='+key);
}, 200);
}
// Remember the (new) key that callback should use
key = $(this).html();
});
为什么需要设置间隔?问题似乎是别的。@prasanthsadhana:很高兴这有帮助!如果它回答了您的问题,那么您可以通过单击它旁边的复选标记来“接受”答案。