如何清除此代码中的Interval()

How to clearInterval() in this code

本文关键字:Interval 代码 清除 何清除      更新时间:2023-09-26

我正在尝试制作一个类似Facebook的墙帖。我需要每十秒钟刷新一次内容div,并且在用户键入注释时不应该刷新div。内容正在重新加载,但没有停止。实际上,我想在单击id = 'comments_option'时停止它。

我尝试了一下,并在$(document).ready 上调用了函数reload(uid)

var intervalId = null;
function reload(uid) {
    intervalId = setInterval(function () {
        var ol = $('#home_list');
        var start = ol.children().length;
        $.post('ajax/reloadhome.php', {
            uid: uid,
            start: start
        }, function (data) {
            $('#buzzfetch ul').html(data);
        });
    }, 5000);

    $('#comments_option').click(function () {
        clearInterval(intervalId);
    });
}

使用on而不是click:

$("#comments_option").on("click", function () {
    clearInterval(intervalId)
});

由于#comments_option位于#buzzfetch ul内部,因此在使用click时,单击事件将仅绑定到#comments_option的第一个实例。它不会绑定到任何其他实例。

有关bindon 之间差异的进一步解释,请参见此答案