在每次迭代jquery之后执行回调

在每次迭代jquery之后执行回调,jquery,callback,each,Jquery,Callback,Each,当每次迭代完成时,我如何正确地执行函数f,这样我就可以计算该特定类的元素了 这将给出0而不是16 f = check_hfouten(); $.each(rest, function(idx, val,f) { //alert(idx + ': ' + val); $('td.info.'+idx).children('span').addClass('fout').attr('title',val).end().parent('tr').find('input').addClass

当每次迭代完成时,我如何正确地执行函数f,这样我就可以计算该特定类的元素了

这将给出0而不是16

f = check_hfouten();
$.each(rest, function(idx, val,f) { 
  //alert(idx + ': ' + val); 
  $('td.info.'+idx).children('span').addClass('fout').attr('title',val).end().parent('tr').find('input').addClass('overlayed').click(function(){$(this).removeClass('overlayed')});
    $('.tag_cloud.'+idx).addClass('reminder');
}).function(f);
感谢adv Richard

中的每一个都不是异步的,因此您不需要回调。只需按顺序调用即可:

f = check_hfouten();

$.each(rest, function(idx, val) { 
  //alert(idx + ': ' + val); 
  $('td.info.'+idx).children('span').addClass('fout').attr('title',val).end().parent('tr').find('input').addClass('overlayed').click(function(){$(this).removeClass('overlayed')});
    $('.tag_cloud.'+idx).addClass('reminder');
});

f();
将对f的调用放在每个回调的主体中:

$.each(rest, function(idx, val,f) { 
    //alert(idx + ': ' + val); 
    // -Snip-
    $('.tag_cloud.'+idx).addClass('reminder');
    f();
});
混乱的方式:p


我希望这很简单,它们都是在ajax函数中执行的。如果所有这些代码都放在一个ajax调用的success/complete函数中,这应该很好。如果您有多个ajax调用,那么您可能希望使用这些详细信息更新您的问题。与每个调用相比,运行速度更快!也许,我应该这样做,因为如果我把它放在each之外,它比each快。如果你把它放在each之外,f会被调用一次。如果将其放置在中,则为每个选定元素调用f。你想要哪一个?在外部,它比each运行得更快,这就是问题所在,所以每个都有回调!我像你说的那样把对f的调用放在了里面,并更改了f中的代码,这样就不再是多余的了,谢谢@George
group = $("p")
$.each(group, function(idx, val,f) { 
  alert(idx + ': ' + val); 
  if(idx == group.length - 1)
      alert("done");
});