1

我正要扯掉我的头发。我正在尝试与我的 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);
4

3 回答 3

6

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

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

于 2012-08-23T18:36:59.590 回答
2

使用异步选项。该主题 与您的问题有关。

希望这会帮助你。

于 2012-08-23T18:35:56.517 回答
-1

我认为每个函数中的 this 是对原始 DOM 元素的引用。.each 给出从 0 开始的索引,所以你应该这样做$('.post-box-time:eq(' + i + ')')

于 2012-08-23T18:38:15.483 回答