наверное на стартовой странице и другие.

аюсь создать слайд-шоу с помощью плагина jQuery Cycle, который содержит еще один уровень вложенных слайд-шоу в некоторых слайдах верхнего уровня.

Основные слайды «контейнера» скользят горизонтально, а затем - для слайдов «контейнера», которые содержат более одного изображения с левой стороны, - эти изображения скользят вверх вертикально.

Пример здесь, потому что я представляю, что это трудно визуализировать:http://dl.dropbox.com/u/2890872/js-test/index.html

Вы перейдете ко второму слайду верхнего уровня только до того, как он остановится, даже при том, что есть шесть слайдов верхнего уровня (это моя проблема - второй слайд содержит только одно левое внутреннее изображение, которое останавливает сценарий), но Вы можете увидеть, что это за переходы, и проверить весь код.

Проблема состоит в том, что не все вторичные слайд-шоу имеют более одного изображения, и цикл jQuery завершает себя, если в слайд-шоу есть одно или меньше изображений. Это завершение также завершает слайд-шоу верхнего уровня, так как оно останавливается и запускается в зависимости от того, когда заканчивается вторичное слайд-шоу. Поскольку вторичное слайд-шоу заканчивается только из-за одного «слайда», то следующий внешний слайд верхнего уровня никогда не вызывается. Я не уверен, как адаптировать код, чтобы обойти это.

JS:

<script type="text/javascript">
$(function(){ 
    // init and stop the inner slideshows
    var inners = $('.slide-up').cycle().cycle('stop');

    var slideshow = $('#home-slides').cycle({
        fx: 'scrollHorz',
        speed: 300,
        timeout: 0,
        before: function() {
            // stop all inner slideshows
            inners.cycle('stop');

            // start the new slide's slideshow
            $(this).children().cycle({
                fx: 'scrollUp',
                timeout: 2000,
                autostop: true,
                end: function() {
                    // when inner slideshow ends, advance the outer slideshow
                    slideshow.cycle('next');
                }
            });
        } 
    });
});
</script>

Образец HTML:

<div id="home-slides">
    <div>
        <div class="slide-up">
            <img src="i/home/slideshow/1l-1.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/1l-2.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/1l-3.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/1r.png" alt="" width="291" height="420" />
    </div>
    <div>
        <div>
            <img src="i/home/slideshow/2l-1.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/2r.jpg" alt="" width="291" height="420" />
    </div>
    <div>
        <div class="slide-up">
            <img src="i/home/slideshow/3l-1.jpg" alt="" width="284" height="420" />
            <img src="i/home/slideshow/3l-2.jpg" alt="" width="284" height="420" />
        </div>
        <img src="i/home/slideshow/3r.png" alt="" width="291" height="420" />
    </div>
    <div>
         …additional slides…
    </div>
</div>

Слайд-шоу заканчивается на втором # home-slides> div, потому что есть только одно изображение. Я попытался удалить вложенность и класс «слайд-ап» из слайдов без внутреннего слайд-шоу, но это не помогает.

Опять же, полную рабочую версию со всем соответствующим кодом можно найти здесь:http://dl.dropbox.com/u/2890872/js-test/index.html

----------- ИЗД. 4/10 - Незначительные обновления и, возможно, лидерство ----------

Я отредактировал код здесь и в примере ссылки, чтобы добавить некоторые детали, которые устраняют первые мысли для устранения неполадок. Теперь только слайды со вторичными слайд-шоу используют класс «слайд-ап».
- Я попытался указать класс «.slide-up» в функции для обратного вызова «end» ('$(this).children('.slide-up').cycle… '), Что предотвращает завершение цикла при слишком малом количестве слайдов, но только при отсутствии элементов!

Самое близкое, что я получил, - это добавление условной проверки к функции в обратном вызове конца: (Я использую длину, чтобы проверить существование скользящего элемента div. Если есть лучший способ, дайте мне знать)

before: function() {
 if ( $(this).children('.slide-up').length != 0 ) {
    // stop all inner slideshows
    inners.cycle('stop');

    // start the new slide's slideshow
    $(this).children('.slide-up').cycle({
        fx: 'scrollUp',
        timeout: 2000,
        autostop: true,
        end: function() {
            // when inner slideshow ends, advance the outer slideshow
            slideshow.cycle('next');
        }
    });
   } else alert('NO INNER SLIDESHOW!');

Это исключает все ошибки и завершения непосредственно из цикла jQuery, но основное слайд-шоу по-прежнему останавливается на слайде без дополнительного слайд-шоу. Я думаю, что нужно вставить что-то в выражение "else", связанное с запуском "slideshow.cycle ('next');", но я не нашел правильный синтаксис, чтобы заставить это работать.

----------- РЕДАКТИРОВАНИЕ № 2 4/10 - ----------

самый последний рабочий пример:http://dl.dropbox.com/u/2890872/js-test/index2.html

Перемещение функции before в ее собственную именованную функцию для сохранения чистоты.

function onBefore(currSlideElement, nextSlideElement, options, forwardFlag) {
     if ( $(this).children('.slide-up').length != 0 ) {
        // stop all inner slideshows
        //inners.cycle('stop');

        // start the new slide's slideshow
        $(this).children('.slide-up').cycle({
            fx: 'scrollUp',
            timeout: 2000,
            autostop: true,
            end: function() {
                // when inner slideshow ends, advance the outer slideshow
                slideshow.cycle('next');
            }
        });
       } 
      // else null;
      else $(this).parent().cycle({ 
        end: function() { slideshow.cycle('next'); }
       });
    } 

Это (оператор else) позволяет слайд-шоу прогрессировать, но оно не сохраняет исходные параметры «слайд-шоу», а просто начинает воспроизведение слайдов верхнего уровня со стандартными стандартными параметрами (исчезает с одного слайда до далее, вместо скольжения, останавливается воспроизведение вторичных слайдов).

Я не понимаю: 1) Как сохранить варианты. (Я думал, именно поэтому вар "слайд-шоу" был создан в первую очередь)

2) Почему еще нужен оператор else - я не понимаю, почему внешние слайды вообще останавливаются, когда условный оператор «.slide-up» не выполняется - я думаю, что внешнее слайд-шоу просто продолжится как обычно.

Ответы на вопрос(4)

Ваш ответ на вопрос