заставить «каждый» цикл происходить последовательно - PullRequest
0 голосов
/ 08 августа 2011

У меня есть два действия, которые нужно применить к набору DIV, но мне нужно, чтобы один цикл выполнялся до завершения другого.

Вот мой код:

$("div").each(function(){
        //do stuff first
}).each(function(){
        //do stuff next
});

, но в настоящее время do stuff next происходит до окончания do stuff first. Что я могу сделать, чтобы остановить это?

Полный скрипт

$("div").each(function(){
                    if($(this).html() === "yes"){

                        $(this).fadeOut(time,function(){
                            $(this).parent().height(0);
                        });



                    }
        }).each(function(){
                    if($(this).html() !== "yes"){

                        $(this).parent().height(25);
                        $(this).fadeIn(time);

                    }
        });

1 Ответ

0 голосов
/ 08 августа 2011

Зная, что вы хотите fadeIn и затем установите высоту, это будет делать то, что вам нужно?

var divs = $('div');
divs.fadeIn(function () {
  divs.height('200');
});

Использование каждого для разрешения различных настроек для разных div:

$('div').each(function () {
  var div = $(this), toggle = true;
  div.fadeIn(function () {
    if (toggle = !toggle) {
      div.height('200');
    } else {
      div.width('200');
    }
  });
});

Видя твой фрагмент кода, я думаю, что получил его сейчас:

var yesDivs = $('div').filter(function () {
  return $(this).html() === 'yes';
});
yesDivs.fadeOut(time, function () {
  yesDivs.parent().height(0);
  $('div').filter(function () {
    return $(this).html() !== 'yes';
  }).fadeIn(time).parent().height(25);
});
...