我要扯头发了。我正在尝试与我的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 + ')')
。