Обновление переменной с использованием последнего селектора при изменении DOM

0

Я пишу карусель и не могу понять, почему переменная держит исходное значение 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?

  • 0
    почему вы вызываете cloneSlide.add() ? Это не связано с вашим вопросом.
  • 0
    Переменная cloneSlide захватывает последний слайд в DOM, клонирует его, а затем добавляет его в контейнер слайдов.
Показать ещё 2 комментария
Теги:

2 ответа

0

Вы только назначаете 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 и когда.

0

Попробуй это,

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);    
    });    
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню