0

我正在使用以下代码:

如果我在 Firebug 中检查它,那么 last-active 将应用于最后一个图像,但最初的“活动”类永远不会被应用?

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=59597329@N08&lang=en-us&format=json&jsoncallback=?", function(data){
    $.each(data.items, function(i,item){
        $("<img src='" + item.media.m + "'></img>").appendTo("#mac");
    });
});

$("#mac img:first").addClass('active');

function slideSwitch() {
var $active = $('#mac img.active');

if ( $active.length == 0 ) $active = $('#mac img:last');

var $next =  $active.next().length ? $active.next()
    : $('#mac img.active');

$active.addClass('last-active');

$next.css({opacity: 0.0})
    .addClass('active')
    .animate({opacity: 1.0}, 1000, function() {
        $active.removeClass('active last-active');
    });
}

$(function() {
    setInterval( slideSwitch, 5000 );
});
4

1 回答 1

1

您应该在初始化函数中移动您的$.getJSON$("#mac img:first").addClass('active');代码(当 DOM 准备好时),否则它可能会在页面尚未加载时运行:

$(function() {
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=59597329@N08&lang=en-us&format=json&jsoncallback=?", function(data){
      $.each(data.items, function(i,item){
          $("<img src='" + item.media.m + "'></img>").appendTo("#mac");
      });
  });

  $("#mac img:first").addClass('active');
  setInterval( slideSwitch, 5000 );
});
于 2011-02-21T12:53:44.700 回答