jQuery - 带$ .each的setInterval

时间:2012-08-23 18:28:18

标签: 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);

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

使用async选项。此Thread与您的问题相关。

希望这会对你有所帮助。

答案 2 :(得分:-1)

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