2012-02-22 1 views
1

У меня есть страница, которая содержит ползунок jCarousel (в div) и div, который содержит список миниатюр. Карусель скрыта при начальной загрузке страницы, в то время как миниатюры видны. То, что я пытаюсь достичь, - это когда пользователь нажимает на определенный эскиз, список миниатюр (или галерея, я должен сказать) исчезает, когда карусель становится видимой. С большей версией изображения щелкнутого миниатюры, показанного сначала на карусель. Я попытался установить параметр конфигурации «карусель» в переменную, которая содержит идентификатор эскиза щелчка, но это дало мне нечетные результаты. Любая помощь будет принята с благодарностью! Вот мой код:Как установить начальный образ jCarousel на основе щелчка мышью отдельной галереи изображений?

<script type="text/javascript"> 
$(document).ready(function() { 
    var currImage; 
    $('#carousel').hide(); 
    $('.thumb').click(function(){ 
     $('#thumbs').fadeOut('slow'); 
     currImage = $(this).attr('id'); 

     $('#mycarousel').jcarousel({ 
      start: currImage, 
      visible: 1, 
      scroll: 1 
     }); 
     $('#carousel').fadeIn('slow');  
    }); 
}); 
</script> 
<div id="thumbs"> 
    <ul class="thumb-display"> 
     <li> 
      <a class="thumb" href="#" id="1"> 
       <img src="pic1-thumb.jpg" /> 
      </a> 
     </li> 
     <li> 
      <a class="thumb" href="#" id="2"> 
       <img src="pic2-thumb.jpg" /> 
      </a> 
     </li> 
    </ul> 
</div> 
<div id="carousel"> 
    <ul id="mycarousel" class="jcarousel-skin-tango"> 
     <li><img src="pic1-large/></li> 
     <li><img src="pic2-large/></li> 
    </ul> 
</div> 

ответ

0

pphou, ваше намеренное использование jCarousel очень похоже на пример Carousel with External Controls.

Трюк заключается в том, чтобы настроить миниатюры как внешние элементы управления в функции initCallback.

Код будет выглядеть примерно так:

JavaScript:

$(document).ready(function() { 
    $thumbs = $('#thumbs'); 
    $carousel = $('#mycarousel').hide(); 
    $carousel.jcarousel({ 
     visible: 1, 
     scroll: 1, 
     initCallback: function(carousel) { 
      $thumbs.find('a').on('click', function() { 
       carousel.scroll($.jcarousel.intval($(this).attr('id'))); 
//    carousel.scroll($.jcarousel.intval($(this).index()));//may work, if so then omit ids from the HTML 
       $thumbs.fadeOut('slow'); 
       $carousel.fadeIn('slow'); 
       return false; 
      }); 
     } 
    }); 
}); 

непроверенных

Вам может понадобиться, чтобы играть с кодом немного, чтобы получить именно то, что вы хотите.

Вам также необходимо установить путь назад к эскизам из карусели. Я не рассматривал этот аспект.

Не забудьте указать идентификаторы миниатюр от 0 (ноль), как указывает gregL.

+0

Большое спасибо за помощь! Я следовал твоему предложению, и я на шаг ближе, но проблема в том, что карусель видна при начальной загрузке. Все остальное отлично работает. Я пробовал немного модифицировать код, но он никуда меня не достает. – selbay84

+0

Это, вероятно, потому, что мой код адресован только '# mycarousel', а не' # carousel'. Попробуйте '$ carousel = $ ('# carousel'). Hide();' и '$ mycarousel = $ ('# mycarousel');' в верхней части функции, тогда у вас есть средства для управления контейнером и сама карусель самостоятельно. Там также '' 'отсутствует в строках 9 и 10 моего кода, но вы, вероятно, заметили это. Если вы все еще не можете заставить его работать, попробуйте создать jsfidle (или упрощение), чтобы мне было с чем поиграть. –

+0

Исправление - я не пропустил $ на линии 9/10. Это было в первый раз. Я установил скрипку - http://jsfiddle.net/sbbm4/2/ –

1

Оказывается, что простой ответ, что start является 0 на основе, а не на основе 1.

Так попробуйте использовать:

$('#mycarousel').jcarousel({ 
     start: currImage - 1, 
     visible: 1, 
     scroll: 1 
    }); 

инициализацию jCarousel.

В качестве альтернативы, может ли плагин правильно определять размеры изображений? Если нет, попробуйте добавить явные атрибуты height и width или стили CSS.

Кроме того, идентификаторы, вероятно, не лучше, чем «1», «2» и так далее. Используйте вместо этого атрибут data-imagenum.

+0

Спасибо, но это предложение не имело никакого эффекта. – selbay84

 Смежные вопросы

  • Нет связанных вопросов^_^