我需要使用jQuery的每个函数,但也需要它从第一个元素到最后一个元素。目前似乎只是选择符合标准的随机元素。
这就是我所拥有的:
$(".ago-time").each(function(index) {
var old_ts = $(this).data("ts2");
$.get("phpscripts/get_new_time.php", {
old_ts: old_ts,
index: index
}, function(result) {});
alert(result);
});
将index
和old_ts
发送到php文件,其输出类似于0: 1 minute ago
。
警报中的内容不符合规定(从0到最高)。它会是这样的;
第一次提醒: 9:10分钟前
第二次提醒: 2:4分钟前
第三次提醒 5:8分钟前
正如您所看到的,警报不是索引顺序,因此每个函数必须随机选择ago-time
。
答案 0 :(得分:1)
each
会在jQuery对象上按顺序迭代匹配的元素,但这里的误解是另一个。
$.get
是一个简写$.ajax
函数,它是异步 HTTP请求。回调函数,在这种情况下:
function(result) {
alert(result);
}
当您从服务器获得响应时,将异步调用。
但是,就你的情况而言,在你尝试调试服务器响应时,这是无关紧要的,也是你的误解。
例如,在您的代码中,您只需在将响应从服务器接收到各自的DOM元素时设置响应。
$(".ago-time").each(function(idx) {
var $self = $(this);
$.get("phpscripts/get_new_time.php", {
old_ts: $self.data("ts2"),
index: idx
}, function(result) {
$self.html(result);
});
});
答案 1 :(得分:0)
$。get 按顺序调用,但您不能保证按顺序获得响应,因为调用是异步的。
如果您将调用更改为同步(通过使用jquery.ajax并传递async:false选项),那么您将获得所需的效果(但是您将在每次调用服务器时阻止UI并提供糟糕的用户体验)