Я немного обновил ваш код, и он все еще нуждается в доработке, но я не хотел запутывать ситуацию. Если у вас есть какие-либо вопросы о том, что это делает, пожалуйста, задавайте. Небольшое объяснение следует за блоком кода.
var $slideshow = jQuery('.slideshow'),
$images = $slideshow.find('img');
$slideshow.css({'position': 'relative', 'width': 240, 'height': 263});
$images.css('display','none').eq(startingSlide).css('display', 'block');
$slideshow.find('span').click(function()
{
if (jQuery(this).hasClass('span2'))
{
var $currentSlide = $images.filter(':visible'),
$nextSlide = $currentSlide.next('img');
if(!$nextSlide.length) $nextSlide = $images.filter(':first'));
$currentSlide.css('display','none');
$nextSlide.css({ display: 'block', top: -300, left: 0}).animate({top: 0, left: 0}, 2000, 'easeOutBounce');
}
else
{
var $currentSlide = $images.filter(':visible'),
$prevSlide = $currentSlide.prev('img');
if(!$prevSlide.length) $prevSlide = $images.filter(':last');
$currentSlide.css('display','none');
$prevSlide.css({ display: 'block', top: 300, left: 0}).animate({top: 0, left: 0}, 2000, 'easeOutBounce');
}
});
Здесь важно получить .next('img')
или .prev('img')
и проверить свойство length
результата. Если оно равно 0, то оно достигло конца или начала, поэтому обязательно выберите img
, чтобы продолжить слайд-шоу.