2011-08-07 59 views
0

我有兩個動作需要應用到一組DIV,但我需要一個循環才能在另一個循環完成之前發生。使'每個'循環連續發生

這裏是我的代碼:

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

但目前,do stuff nextdo 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); 

        } 
     }); 
+0

的'stuff'你做'第一個'可能是異步的,在這種情況下,你可能不得不使用回調。 –

+0

使用'fadeIn'和'height' –

+0

沒有時間進入更多的細節,但看看jQuery的'queue()'。 – Radu

回答

0

知道你想淡入,然後設置高度,將在你需要什麼?

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); 
}); 
+0

不,因爲有幾個'div'具有不同的屬性 –

+0

你可以很容易地修改這個使用每個。 –

+0

但您已將淡入和高度分組到兩個陣營。這不是腳本顯示的預期行動。 –