1

次のコードを実行する ajax 成功関数があります。

success: function(json) {
  for (var i = 0; i < json.album.tracks.length; i++) {
      audio.push(json.album.tracks[i].url);
      var new_li = $('<li class="spacer" data-id="' + json.album.tracks[i].id + '">' + json.album.tracks[i].title + '</li>').hide();
      $('.playlistSongs').append( $(new_li).fadeIn(1000)); //1000 is just for testing    
  }
}

これはうまくいきます!問題は、私が望むように機能しないことです。プレイリスト div で各トラックを 1 つずつフェードインしたい。ただし、すべてのトラックが一緒にフェードインします。別の場所に .delay() を追加しようとしましたが、違いはありませんでした。

私の質問は、各トラックをすべて一緒にフェードインさせるのではなく、一度に 1 つずつフェードインさせるにはどうすればよいですか? コードを成功コールバックの外に移動しようとしましたが、まだ機能していません。

ありがとう。

4

2 に答える 2

1

それ以外の

 $('.playlistSongs').append( $(new_li).fadeIn(1000)); 

試す

$('.playlistSongs').append(new_li).fadeIn(); 
于 2013-10-20T13:17:57.760 に答える
0

これを試して:

  var lis = ""
  for (var i = 0; i < json.album.tracks.length; i++) {
      audio.push(json.album.tracks[i].url);
      lis += '<li class="spacer" data-id="' + json.album.tracks[i].id + '">' + json.album.tracks[i].title + '</li>';
  }

  $(lis)
        .hide()
        .appendTo('.playlistSongs')
        .each(function(index) {
            // For each li, wait some time and fadeIn. The first one will not have a delay
            $(this).delay(400*index).fadeIn(300);
        });
于 2013-10-20T13:20:41.467 に答える