JQuery - получение цикла prev / next для запуска jcarousel prev / next - PullRequest
0 голосов
/ 21 февраля 2012

У меня в цикле запускается слайд-шоу, в котором при наведении указателя мыши отображается предыдущая / следующая графика. Цикл также имеет вертикальный миниатюрный пейджер. Я обернул пейджер в настроенную версию jCarousellite, которая помещает класс .activeSlide в активную миниатюру и имеет собственный набор ссылок предыдущая / следующая.

В целом, он работает довольно хорошо и его можно увидеть здесь:

http://www.spiritlevel.co.uk/cycletest/cycle_test.html

Однако у меня есть одно последнее препятствие ...

Когда щелкают предыдущую / следующую графику в слайд-шоу, я хочу проверить, виден ли недавно .activeSlide в карусели, и если нет, сделать это так ... и я действительно мог бы сделать это с некоторой помощью.

Чтобы привести пример, когда вы нажмете на мою ссылку выше, вы увидите, что в карусели видно 8 миниатюр. Миниатюра 1 активна. Если я нажму на следующий рисунок в слайд-шоу, миниатюра 2 станет активной. нажмите еще раз, и миниатюра 3 станет активной и т. д. Все хорошо, пока я не щелкну в восьмой раз, и миниатюра 9 не станет активной - проблема в том, что миниатюра 9 не видна в карусели - и поэтому на этом этапе я хотел бы, чтобы какой-то код активируйте, чтобы вызвать карусель и сделать эскиз 9 видимым. (в этом случае будет работать следующая ссылка на карусель)

Решение также должно иметь дело с такой ситуацией, как загрузка страницы, и пользователь немедленно щелкает предыдущее изображение на слайд-шоу, которое показывает последний слайд. Инициирование предыдущей ссылки на карусели здесь не сработает - скорее, следующая ссылка должна быть активирована несколько раз, чтобы сделать активный эскиз видимым.

Надеюсь, я был ясен - на самом деле довольно сложно объяснить, чего я хочу, но я думаю, что это будет довольно очевидно, когда вы нажмете на мою ссылку выше - это легче увидеть, чем описать!

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

спасибо

1 Ответ

2 голосов
/ 21 февраля 2012

Может быть ...

// When clicking the cycle arrows
$('#slidecontrol a').click(function () {
    var activeSlide = $('div.jcarousellite li.activeSlide');

    // If the "activeSlide" in the jcarousel is not already visible
    if (!activeSlide.is(':visible')) {
        // If there are items ABOVE the active slide that are visible we need to go down
        if (activeSlide.prevAll('li:visible').length) {
            var clicker = $('div.nextlite').find('a');
        }
        // Else we need to go up
        else {
            var clicker = $('div.prevlite').find('a');
        }

        // Keep clicking untill it's visible
        while (!activeSlide.is(':visible')) {
            clicker.click();
        }
    }
});
...