Thank you so much for the reply. I had figured it out but your way is
much more elegant. here's what I had done:

$(".box").hide();

  var currentBox = $("#container :first-child");
  fadeMyBoxes(currentBox);

   function fadeMyBoxes(thisbox){


                        thisbox.fadeIn('slow');

                        if (thisbox.is(":last-child")){
                        clearTimeout(t);
                        }

                        else {
                        var t =setTimeout( 
function(){fadeMyBoxes(thisbox.next());},50);
                        }

        };

On Jan 10, 10:04 am, Balazs Endresz <balazs.endr...@gmail.com> wrote:
> It can be done with setInterval too but doing it recursively withsetTimeoutis 
> a bit better:
>
> var i=0, elements=$('.box'), length=elements.length;
>
> functionfade(delay){
>    elements.eq(i++).fadeOut();
>    if(i<=length)
>      setTimeout(arguments.callee, delay);
>    //arguments.callee is a reference to the current function
>
> }
>
> fade(500);
>
> On Jan 10, 3:05 am, legofish <pen...@gmail.com> wrote:
>
> > Hi,
>
> > I have 20 divs all with the class ".box" on my page.
> > I want to apply the fadeIn() effect to all of them.
> > I dont want them to allfadein at the same time.
> > I want them tofade-in one by one, with a slight time offset.
> > I dont want to use callback functions, because I dont want to wait
> > until thefadeis completely finished on one div before fading the
> > next div. I want thefadeeffect on the next div to start a short time
> > after the effect on the previous one has started.
>
> > So I think I need to usesetTimeoutand some kind of a recursive
> > method, but I'm not very good with JS so I was hoping someone would
> > find this trivial and could help answer my question.
>
> > my thanks in advance.

Reply via email to