Добавить подписи к вложенному циклу Jquery

У меня есть галерея, созданная из вложенных слайд-шоу с использованием плагина цикла jquery. Я хочу, чтобы подписи, основанные на тексте alt, отображались на каждом изображении в слайд-шоу, но я не знаю, где в сценарии мне нужно это активировать. Если кто-то может помочь, я был бы очень признателен. Спасибо!

//stop subgal initially
            $('#hovergal .subgal').cycle({
                fx: 'fade',
                timeout: 10000,
                slideExpr: 'img'
            }).cycle('pause');

            //start subgal on click
            $('#hovergal').cycle({
                fx: 'scrollUp',
                speed: 300,
                timeout: 0,
                slideExpr: '>div.subgal',
                pager: 1,
                pagerAnchorBuilder: function(i) {
                    return $('aside.sgnav a:eq(' + i + ')');
                },
                after: function(curr,next,opts) {
                    var cmd = opts.currSlide == 1 ? 'resume' : 'pause';
                    $('div.subgal').cycle(cmd);
                }
            });
    } else {//else, if there's only one gallery to be shown

        $('#hovergal .subgal').cycle({
            fx: 'fade',
            timeout: 3000,
            slideExpr: 'img'
        }); 
    }

person qp2wd    schedule 22.08.2011    source источник


Ответы (2)


Я предполагаю, что все так же застряли, как и я, поскольку я безуспешно пытался найти ответ на этот вопрос в течение двух недель. Я отказался от попыток решить эту проблему с помощью параметров Jquery.Cycle и вместо этого переключил свои галереи на построение из списков, а не из div, при этом каждый элемент списка содержит контейнер заголовка, который извлекает свое содержимое из тега alt. После этого мне просто нужно было изменить slideExpr на список, и вуаля.

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

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

person qp2wd    schedule 23.08.2011

Я думаю, что это не имеет ничего общего с плагином цикла. Если вас устраивают эти строки, вам просто нужно добавить функцию в $(document).ready(function() {}, что-то вроде

$('.slideshow img').each(function(){
    var el = $(this);
    var alttext = el.attr('alt');
    el.after('<span>'+alttext+'</span>');
});

это добавляет ваш замещающий текст сразу после изображения, и вы можете абсолютно точно его позиционировать с помощью css. Вероятно, вам нужно адаптировать это к вашей структуре, может быть не img и "el.after", а

$('.slideshow img').each(function(){
    var el = $(this);
    var parentdiv = el.parents('div:eq(0)');
    var alttext = el.attr('alt');
    parentdiv.append('<span>'+alttext+'</span>');
});

или так. Рабочий пример вы можете найти здесь (мой сегодняшний пост) Jquery Cycle - несколько вложенных слайд-шоу и завершение цикла или здесь http://ferienhaus-fischland-ahrenshoop.de/mini4/ позже, после завершения этого проекта, нужно будет удалить mini4/ Если у вас есть дополнительные вопросы, приветствую, Gretinx, Майкл

person ddlab    schedule 15.01.2012