2

我将一个 html 字符串 (var data['return']) 附加到具有以下形式的 ul 元素 $('#sidebar_append')

<li>item one</li>
<li>item two</li>
<li>item three</li>

我想为所有孩子创建一个连续的淡入淡出动画。我尝试了以下方法,但它不会淡入淡出

$('#sidebar_append')
    .hide()
    .append(data['return'])
    .children()
    .each(function() {
          $(this).fadeIn('fast')
    });

这很奇怪,因为当我执行console.log($(this))我实际上得到了liin firebug 但没有fadeIn.

4

3 回答 3

1

Nevermind, it's pretty simple, I forgot that $('#sidebar_append') is still hidden. You also need a delay to create a sequence animation:

$('#sidebar_append')
  .append(data['return'])
  .children().hide()
  .each(function(index) {
      $(this).delay(150*index).fadeIn('slow')
  });
于 2012-08-23T10:37:16.390 回答
1

尝试这个

(function(){
    $('#sidebar_append').append(data['return']).children().hide();
    var index=0;
    function show()
    {
        $('#sidebar_append li').eq(index).fadeIn('slow', function(){
            index+=1;
            if($('#sidebar_append li').eq(index).length) show();
            else return false;
        });
    }
    show();
})();

演示

于 2012-08-23T11:11:16.873 回答
0

连同那个插件jquery-timing整个事情变得更短:

$('#sidebar_append').append(data['return'])
    .children().hide().each($).fadeIn('fast',$);

于 2012-08-28T09:22:25.203 回答