Цикл jQuery - слайд img не загружен - PullRequest
3 голосов
/ 28 февраля 2011

Я использую плагин jQuery Cycle для создания очень простого слайд-шоу:

Markup:

<div class="gallery group">

    <div class="slide-nav">
        <a href="#" class="previous">&laquo; Ver anterior</a>
        <a href="#" class="view">Ver Ficha</a>
        <a href="#" class="next">Ver siguiente &raquo;</a>
    </div><!-- /slide-nav -->

    <div class="slider">

        <div class="slides">
            <img src="img/gallery01.jpg" alt="" />
            <img src="img/gallery02.jpg" alt="" />
            <img src="img/gallery01.jpg" alt="" />
            <img src="img/gallery02.jpg" alt="" />
        </div>

        <div class="thumbs"></div>

    </div><!-- /slider -->

</div><!-- /gallery -->

Сценарий:

jQuery('.gallery .slider .slides').cycle({ 
    fx:     'fade', 
    speed:  '800', 
    timeout: 3000, 
    prev:   '.gallery .slide-nav a.previous',
    next:   '.gallery .slide-nav a.next',
    pager:  '.gallery .slider .thumbs',

    // callback fn that creates a thumbnail to use as pager anchor 
    pagerAnchorBuilder: function(idx, slide) {
        var img = jQuery(slide).find("img").attr("src");
        return '<a href="#"><img src="' + img + '" /></a>';
    } 
});

pagerAnchorBuilder - это функция, которая создает миниатюры в pager (.thumbs в моем примере). Идея состоит в том, что миниатюры создаются в .thumbs, а .slides является оберткой для слайдов (изображения в моем случае).

Тем не менее, я получаю это в журнале в консоли (не ошибка или предупреждение, просто журнал):

[цикл] 1 - слайд img не загружен, создание слайд-шоу: gallery01.jpg 0 0

Слайд-шоу все еще работает, но не создает эскизы, сообщая, что переменная img из функции pagerAnchorBuilder не определена.

Есть идеи, что означает "показ слайдов" и почему изображение не определено? Я использовал этот точный фрагмент много раз в прошлом, и раньше у меня никогда не было этой проблемы.

1 Ответ

2 голосов
/ 28 февраля 2011

Хмм ...

    var img = jQuery(slide).find("img").attr("src");

Если "слайд", переданный в ваш обратный вызов "pagerAnchorBuilder", будет одним из <img> элементов в "слайдах" <div>, тогда вы не будетене нужно "найти ()".Это должно быть просто:

    var img = jQuery(slide).attr('src');

или, проще:

    var img = slide.src;

Метод .find () никогда не будет включать начальный элемент;он смотрит только на потомков в DOM.

...