LINUX.ORG.RU

Предыдущее положение в jquery слайдере.

 


0

1

Пишу слайдер. У текущего изображения в слайдере есть css анимация(увеличение и поворот изображения).

Когда я перехожу на предыдущий слайд, текущее изображение на долю секунды возвращается в свое первоначальное состояние,т.е становится не повернутым и не увеличеным. Выглядит не очень красиво.

Когда листаю следующие слайды, то этой проблемы нет..

В чем дело?

http://jsfiddle.net/JwmxK/1/

Код слайдера:

var slidePath = '.testSlider > div.slide';

var sliderDuration = 53000;

var rotate = setInterval(slideShow, sliderDuration);

$(slidePath).hide();

slideShowFirst();

$('.slider-block').hover(function() {
  clearInterval(rotate);
}, function() {
  rotate = setInterval(function() {
      slideShow();
  }, sliderDuration);
});

$('.control-right').click(slideShow);

$('.control-left').click(function() {

	$(slidePath + ':last-child').fadeOut('slow');

	$(slidePath + ':eq(-2)').fadeIn('slow');	

	$(slidePath + ':last-child').prependTo('.testSlider');

});

function slideShow() {

	$(slidePath + ':last-child').fadeOut('slow');

	$(slidePath + ':first-child').fadeIn('slow').appendTo('.testSlider');
}

function slideShowFirst() {

	$(slidePath + ':first-child').appendTo('.testSlider').show();
}



Последнее исправление: Chillwood (всего исправлений: 1)

Я в этом jQuery ничего не понимаю и не разбираюсь, но если тебе нужен костыльчик, то напиши

setTimeout(function(){
        $(slidePath + ':last-child').prependTo('.testSlider');},500); 

в обработчике left click вместо $(slidePath + ':last-child').prependTo('.testSlider');} - у меня такое сработало.

Как я понимаю, именно метод prependTo сбивает анимацию (поскольку перестраивается дерево элементов), и если его выполнение отложить до момента, когда изображение уже потускнело, то рывок становится незаметен.

amomymous ★★★
()
Ответ на: комментарий от amomymous

Благодарю. Я проблему уже решил, переместил элементы через appendTo. Проблема была действительно в prependTo

Chillwood
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.