在.each中设置JavaScript/jQuery clearInterval

Ian*_*Ian 5 javascript ajax jquery setinterval clearinterval

所以我为每个帖子创建了一个间隔,问题是我加载了新帖子并删除了旧帖子,所以显然我想停止之前帖子的间隔.但是我似乎无法弄清楚如何做到这一点.有人可以向我解释如何正确地做这件事吗?我完全迷失了.

$(".post").each(function(){
    myInterval = setInterval("postStats('"+$(this).attr('id')+"')", 500);
});

function postStats(pid) {
    //do some stuff
}

$(".button").click(function(){
    clearInterval(myInterval);
});
Run Code Online (Sandbox Code Playgroud)

kar*_*m79 5

您可以将间隔ID存储在数据属性中:

$(".post").each(function () {
    var that = this;
    var myInterval = setInterval(function () {
        postStats(that.id);
    }, 500);
    $(this).data("i", myInterval);
});
Run Code Online (Sandbox Code Playgroud)

并清除每个特定的间隔,.post如下:

$(".button").click(function () {

    // assuming the button is inside a post
    clearInterval($(this).closest(".post").data("i"));
});
Run Code Online (Sandbox Code Playgroud)

和SiGa​​nteng说的那样,你应该传递一个函数对象setInterval而不是一个字符串,它只能得到eval'd.