使每个功能按第一个元素的顺序执行

时间:2012-10-20 12:40:52

标签: jquery

我需要使用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);
});

indexold_ts发送到php文件,其输出类似于0: 1 minute ago

警报中的内容不符合规定(从0到最高)。它会是这样的;

第一次提醒: 9:10分钟前

第二次提醒: 2:4分钟前

第三次提醒 5:8分钟前

正如您所看到的,警报不是索引顺序,因此每个函数必须随机选择ago-time

2 个答案:

答案 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并提供糟糕的用户体验)