Я пишу карусель и не могу понять, почему переменная держит исходное значение DOM, несмотря на изменение DOM:
// Slide container selector
var carouselSlides = $('#carousel_1 #carousel_slides');
// Selects last slide in the DOM
var cloneSlide = $('#carousel_slides .carousel_slide').last().clone();
// Prepend last slide to slide container
cloneSlide.prependTo(carouselSlides);
function changeSlideNext() {
carouselSlides.animate({
left: '-=980'
}, 1000, 'easeOutExpo', function() {
// Remove prepended slide
cloneSlide.remove();
// Move first slide to the last
$('#carousel_slides .carousel_slide').first().appendTo(carouselSlides);
carouselSlides.css('left','-980px');
// Add new prepended slide when animation is complete (and DOM is updated)
cloneSlide.add().prependTo(carouselSlides);
});
}
Вышеприведенный код всегда добавляет последний слайд в исходном DOM. Как выбрать слайд.last() после обновления DOM?
Вы только назначаете cloneSlide
один раз, вне функции. Вызов changeSlideNext()
не присваивает ему никакого другого значения - нет причин ожидать, что он будет другим.
Вы хотите сохранить последний слайд в функции, например:
carouselSlides.animate({
left: '-=980'
}, 1000, 'easeOutExpo', function() {
// Remove prepended slide
cloneSlide.remove();
// Move first slide to the last
cloneSlide = $('#carousel_slides .carousel_slide').first().appendTo(carouselSlides);
carouselSlides.css('left','-980px');
// Add new prepended slide when animation is complete (and DOM is updated)
cloneSlide.prependTo(carouselSlides);
});
Надеюсь, я правильно понял идею функции. Я не совсем уверен, какое значение вы хотели бы использовать для cloneSlide
и когда.
Попробуй это,
function changeSlideNext() {
carouselSlides.animate({
left: '-=980'
}, 1000, 'easeOutExpo', function() {
var cloneSlide = $('#carousel_slides .carousel_slide:first').clone();
// Remove first slide
$('#carousel_slides .carousel_slide:first').remove();
// Append new slide to last
cloneSlide.appendTo(carouselSlides);
});
}
cloneSlide.add()
? Это не связано с вашим вопросом.