Цикл jQuery. Что не так с этим скриптом jquery?

Я использую плагин цикла jquery для создания слайд-шоу. У меня есть 5 фотографий, которые скользят, но одновременно отображаются только 3 миниатюры страниц. Я хотел, чтобы при переходе к 4-й фотографии миниатюры внизу менялись, чтобы отображались 4-я и 5-я миниатюры.

У меня есть кнопки «Далее» и «Предыдущая» на странице, при нажатии «Далее» отображаются 4-я и 5-я миниатюры, нажмите «Предыдущая», чтобы вернуться к 1-й и 3-й миниатюре. Итак, в основном, я хочу, чтобы div, содержащий миниатюру, автоматически анимировался влево, когда он скользил к 4-й фотографии, как если бы вы нажали кнопку «Далее». Но я понятия не имею, почему это не работает....

Вот скрипт, который запускает слайд и возвращает номер текущего слайда:

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.cycle.all.js"></script>
<script type="text/javascript">
$(function() {
    $('#slideshow').cycle({           
        fx:     'turnDown',
        speed:  'fast',
        pager:  '#nav',
        pagerAnchorBuilder: function(idx, slide) {
            // return sel string for existing anchor
            return '#nav li:eq(' + (idx) + ') a';
        } ,
    after: function (curr, next, opts) {
   var number = (opts.currSlide + 1);
$('#caption1').html(number);
},  
    });
});
</script>

Вот код, который управляет кнопками «Далее» и «Назад»

<script type="text/javascript">
$(document).ready(function() {
    $('#next_control').click(function() {
        var c = $('#nav_content');
        var pos = c.position();
        var w = c.width();
        var status = w + pos.left;
        var dif = w - 190;
        var x = w + dif;
        if (status > 190) {
            c.stop().animate({
                left: pos.left - 180
            }, 500);
        };
    });
});
$(document).ready(function() {
    $('#prev_control').click(function() {
        var c = $('#nav_content');
        var pos = c.position();
        if (pos.left < 0) {
            c.stop().animate({
                left: pos.left + 180
            }, 500)
        };
    });
});

Наконец, вот код, который, как я думал, будет выполнять тот же эффект, что и нажатие кнопки «Далее», когда слайд-шоу переходит к 4-й фотографии. Но почему-то не работает....

$(document).ready(function(){
        if(number = 4){
            $('#nav_content').stop().animate({left: pos.left - 180},500);
            }              
                           });
</script>

Любая идея..? Спасибо!!!


person Newcomer    schedule 26.11.2011    source источник


Ответы (2)


Вы имеете в виду number == 4 в своем последнем блоке кода? Кроме того, вы ссылаетесь на локальную переменную в другой функции, которая не будет работать.

person Danalog    schedule 26.11.2011
comment
Привет, Даналог, ты имеешь в виду, что я не могу использовать номер переменной в функциях, отличных от цикла? Вы знаете, как заставить его работать..? Спасибо - person Newcomer; 26.11.2011
comment
Вам нужно либо сделать его глобальной переменной (гадость), либо каким-то образом вытащить его из вашей DOM. Поскольку похоже, что вы устанавливаете его в $('#caption1').html(number);, возможно, вы могли бы вытащить его из элемента #caption1? - person Danalog; 26.11.2011
comment
Ах... не могу заставить его работать, на самом деле я новичок в кодировании, это расстраивает :( Я использовал var z = $('#caption1').html(); в качестве новой переменной, это должен быть номер отображаемого в данный момент слайда. Затем я использовал if(z = 4){$('#nav_content').stop().animate({left: pos.left - 180},500);} что не так с Это? - person Newcomer; 26.11.2011
comment
z = 4 присваивает z значение 4. z == 4 проверяет, равно ли z 4. Я не уверен на 100% в отношении остальной части вашего jQuery-материала, который вы там делаете, но, по крайней мере, я вижу эту логическую проблему. - person Danalog; 27.11.2011

Наконец-то выяснил, что не так... я не определил переменную "pos" в последнем блоке кода. Решил проблему сейчас. Спасибо за помощь Даналог!

person Newcomer    schedule 27.11.2011
comment
Рад, что смог помочь! Я должен был заметить, что pos не был определен, когда не был определен номер, извините! - person Danalog; 01.12.2011