backstretch next & previous кнопки

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

Когда я нажимаю на следующую кнопку, ничего не происходит.

Моя следующая кнопка выглядит так:

<a id="next" href="#"><img src="/images/arrow-right.png">

И я помещаю весь свой код jquery внизу страницы перед тегом закрытия тела.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="/js/jquery.backstretch.js"></script>
<script>
    var images = [
    "/images/backgrounds/Image01.jpg",
    "/images/backgrounds/Image02.jpg",
    "/images/backgrounds/Image03.jpg"
    ];

    $(images).each(function() {
       $('<img/>')[0].src = this; 
    });

    // The index variable will keep track of which image is currently showing
    var index = 0;

    $.backstretch(images[index], {speed: 500});

    $('#next').click(function(x) {
        x.preventDefault();
        $('body').data('backstretch').next();
    });
    $('#prev').click(function(x) {
        x.preventDefault();
        $('body').data('backstretch').prev();
    });
</script >

Используя Firebug для отладки, я получаю это:

    TypeError: $(...).data(...) is undefined
    $('body').data('backstretch').next();

3 ответа

Решение

Обратный вызов был неверным.

Вместо этого:

    $.backstretch(images[index], {speed: 500});

Я хотел это:

    $.backstretch(images, {speed: 500});
    $('body').data('backstretch').pause();

Дело не в том, что кнопки next/prev не работали, а в том, что при первом вызове передавалось первое изображение, а не набор изображений.

Вторая строка (с паузой в ней) находится там, поэтому изображения не меняются автоматически, они меняются только тогда, когда я нажимаю кнопки "Следующая / Предыдущая".

Попробуйте это вместо этого:

$('body').backstretch(images[index], {speed: 500});
$('#next').click(function(x) {
        x.preventDefault();
        $('body').data('backstretch').next();
    });
$('#prev').click(function(x) {
        x.preventDefault();
        $('body').data('backstretch').prev();
    });

Я пытаюсь решить ту же самую проблему твоего...

        var rootUrl = "http://www.sagmeisterwalsh.com";
    var images = [
    rootUrl+"/images/u_work/Aizone-11.jpg",
    rootUrl+"/images/u_work/Aizone-12.jpg",
    rootUrl+"/images/u_work/Aizone-13.jpg"

    ];

    $(images).each(function() {
       $('<img/>')[0].src = this; 
    });


    var index = 0;
    var i = 1;


    $.backstretch(images[index], {
        fade: 750,
        duration: 4000
    });

     $('#next').click(function(x) {
        x.preventDefault(); 


             $.backstretch(images[i++], {
                fade: 750,
                duration: 4000

            });

         $('#output').html(function(i, val) { return val*1+1 });
    });


    $('#prev').click(function(x) {
        x.preventDefault();
           $.backstretch(images[i--], {
               fade: 750,
                duration: 4000
           });
     $('#output').html(function(i, val) { return val*1-1 });   

    });

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

http://jsfiddle.net/XejZV/

Другие вопросы по тегам