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:很高兴这有帮助!如果它回答了您的问题,那么您可以通过单击它旁边的复选标记来“接受”答案。