выполнить обратный вызов после jquery каждой итерации - PullRequest
0 голосов
/ 09 августа 2011

Как правильно выполнить функцию 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);

спасибо в авизо Ричард

Ответы [ 3 ]

6 голосов
/ 09 августа 2011

each не асинхронный, поэтому вам не нужен обратный вызов.Просто позвоните по порядку:

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();
1 голос
/ 09 августа 2011
group = $("p")
$.each(group, function(idx, val,f) { 
  alert(idx + ': ' + val); 
  if(idx == group.length - 1)
      alert("done");
});

Грязный путь: P

http://jsfiddle.net/cwDjL/

1 голос
/ 09 августа 2011

Выполните вызов f() в теле обратного вызова each():

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