jQuery - 带$ .each的setInterval

sko*_*ind 1 javascript jquery

我快要撕掉头发了.我正在尝试与我的PHP函数进行交互,该函数测量了一些时间:timeSince()发布了一个帖子.

我不需要在jQuery中执行此操作的插件,谢谢:o)

但是我不想在所有.post-box-time 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);
Run Code Online (Sandbox Code Playgroud)

Dog*_*Dog 6

那么你应该var在宣布之前抛出一个$this.

您将它声明为全局变量,而不是在每个函数的范围内声明它(这是var所做的)each().当您的响应回调实际被触发时,您的循环已经完成并设置了全局变量$this(或window.$this)通过each()循环时找到的最后一个.post-box-time的值

  • @Kolind没有`var`,`$ this`被声明为全局变量而不是局部变量.http://stackoverflow.com/q/1470488/ (2认同)
  • 你将它声明为一个全局变量,而不是在每个函数由`every()`运行的范围内(这是`var`所做的).因此,当您的响应回调实际被触发时,您的循环已经完成并将全局变量$ this(或`window.$ this`)设置为循环时发现的最后一个`.post-box-time`的值`每个()`. (2认同)