开发者

jQuery - Append multiple elements one after the other

I'm looking to create a nice effect when appending multiple paragraphs to a div. When I append I want to fadeIn the paragraphs one at a time so one shows after the other. At the moment they all fade in at the same time.

example html;

<div class="wrapper">
<p 开发者_开发百科class="para">paragraph 1</p>
<p class="para">paragraph 2</p>
<p class="para">paragraph 3</p>
</div>

Here is the code used to append to the div

$(results).prependTo(".wrapper").hide().fadeIn('slow');

(Results) is simply the multiple paragraphs.

Thanks in advance for your help and advice.


You could try something like this:

$(results).bind('appear', function(){ // bind a custom event
  $(this).fadeIn('slow', function(){
    $(this).next('p.para').trigger('appear'); // recurse
  });
})
.prependTo('wrapper')
.end() // back to "results"
.hide() // not necessary if already hidden by style rule
.first().trigger('appear'); // start the cascade

Here's an example: http://jsfiddle.net/redler/CDbEn/


You could use queue() for this:

$('p').prependTo("#wrapper").hide().each(function() {
    var element = $(this);
    $('#wrapper').queue(function() {
        setTimeout(function() {
            element.fadeIn('slow');
            $('#wrapper').dequeue();
        }, 700);
    });

});

Example.



//assuming resuls is an array of strings containing your p's
var appear = function(index) {
  if (results[index])
    $(results[index]).prepend('.wrapeer').hide().fadeIn('slow', function(){ appear(index+1); });
}


What about

$('.para').each(function(index){
    $(this).hide().prependTo('.wrapper').delay(500 * index).fadeIn('slow');
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜