jQuery - setInterval with $.each

jQuery - setInterval with $.each

本文关键字:each with setInterval jQuery      更新时间:2023-09-26

我要扯头发了。我正在尝试与我的PHP函数进行交互,该函数测量一些时间:发布帖子的时间Since()。

我不需要在jQuery中使用插件,谢谢:o)

但我不想在所有的.post-box时间div上运行$.get(),所以我使用了$.each。但它只是更新最后一个元素,但给了我其他div的结果。->就好像它没有做$.each()..

这是我的代码:

setInterval(function() {
        $('.post-box-time').each(function() {
            var time = $(this).attr('data-time');
            $this = $(this);
            $.get("sys/calls.handler.php", { do: 'timeSince', data: time },
                function(data){
                    $this.html(data);
                });
        }); // each function
    }, 1000);

在声明$this之前应该抛出一个var

您将它声明为全局变量,而不是在each()运行的每个函数的作用域(var就是这样做的)内声明它。因此,当您的响应回调实际上被触发时,您的循环已经完成,并将全局变量$this(或window.$this)设置为通过each()进行循环时发现的最后一个.post-box时间的值

使用异步选项。这条线索与你的问题有关。

希望这对你有帮助。

我认为每个函数中的这是对原始DOM元素的引用。.each给出了从0开始的索引,因此您应该改为使用$('.post-box-time:eq(' + i + ')')