2010-03-22 1 views
2

Я хотел бы иметь несколько галерей цикла на странице, но только один активный за раз, а остальные скрыты. В идеале щелчок по ссылке (миниатюра из списка) активирует следующую галерею цикла. Имеют смысл? Кто-нибудь сделал это раньше? Поблагодарите советы, спасибо!Как иметь несколько галерей цикла jquery на странице, только один активный?

+0

Предполагая, что вы имеете в виду http://jquery.malsup.com/cycle/, это не должно быть большой проблемой. Вы пробовали себя? Я предполагаю привязать 'click()' к эскизам и 'hide()'/'show()' правильные элементы и несколько вызовов '.cycle ('pause') /. Cycle ('resume')' should сделайте трюк – jitter

+0

Да, жаль, что это плагин, который я использую. Спасибо за идею, что я пытался это сделать, но не так, поэтому вы упомянули об этом, я вернулся со вторым взглядом и частично работал сейчас. Так что спасибо. :) По-прежнему пытается понять способ сделать это без подхода «грубой силы», чтобы скрыть всех остальных при щелчке и показать соответствующий и щелкнуть. Знаешь что я имею ввиду? Могу ли я это сделать с помощью селекторов в одной функции? Или нужен один вызов функции для каждого? Еще раз спасибо! – thatryan

+0

Не могли бы вы достигнуть максимума в этом коде? pastie.textmate.org/880555 Я разместил соответствующие фрагменты, js, которые я пытаюсь, миниатюрный вызов и галерею div. Кажется, это работает, но возобновление перепутано. Не показывать изображения. Когда он возвращается, он ТОЛЬКО показывает изображение, где оно было приостановлено или остановлено. Проходит через список, а затем показывает его снова ...? – thatryan

ответ

1

Хорошо, теперь, когда я видел ваш сайт, я могу видеть, что вам нужно что-то более гибким, поскольку у вас есть около 15 галерей для контроля , Дайте этому вихрь:

$(document).ready(function() { 
    $.expr[':'].gallery = function(a) { return /^gallery\d+/.test(a.id); } 

    // initialize and pause the slideshows 
    var $gallery = $(':gallery').each(function() { 
     var $nav = $('<ul class="gallery-nav">').insertBefore(this); 
     $(this).cycle({ 
      fx:  'slideY', 
      speed: 1000, 
      timeout: 6000, 
      pager: $nav 
     }).cycle('pause'); 
    }); 

    var $navs = $('ul.gallery-nav'); 

    // hide all but first gallery and pager and restart first gallery slideshow 
    $navs.not(':eq(0)').hide(); 
    $gallery.not(':eq(0)').hide() 
    $gallery.eq(0).cycle('resume'); 

    // bind click triggers to show/hide galleries 
    var $thumbs = $('#slider_thumbs a').click(function() { 
     var index = $thumbs.index(this); 
     $gallery.not(':eq('+index+')').cycle('pause').hide(); 
     $gallery.eq(index).show().cycle('resume'); 
     $navs.eq(index).show(); 
     $navs.not(':eq('+index+')').hide(); 
     return false; 
    }); 
}); 
+0

Wow Mike, большое вам спасибо за то, что нашли время, чтобы понять это для меня. Я очень благодарен. Прекрасно работает, поэтому мне нужно изучить его, потому что я не понимаю, что из того, что происходит :) Спасибо. – thatryan

3

непроверенная, но что-то, как это должно быть близко:

$(document).ready(function() { 
    // initialize and hide both slideshows 
    $('#gallery1,#gallery2').each(function() { 
     var $nav = $('<ul class="gallery-nav">').insertBefore(this); 
     $(this).cycle({ 
      fx:  'slideY', 
      speed: '1000', 
      timeout: 6000, 
      pager: $nav, 
      pagerAnchorBuilder: function(i) { 
       return '<li><a href="#">'+(i+1)+'</a></li>'; 
      } 
     }).cycle('pause').hide(); 
    });  

    // bind click triggers to show/hide galleries 
    $('.gallery1,.gallery2').click(function() { 
     var isOne = $(this).is('.gallery1'); 
     var showId = '#gallery' + isOne ? 1 : 2; 
     var hideId = '#gallery' + isOne ? 2 : 1; 
     $(hideId).cycle('pause').hide(); 
     $(showId).show().cycle('resume'); 
     return false; 
    }); 
}); 
+2

Прохладная вещь о Майке Альсупе, отвечая на вопрос, что есть очень высокая вероятность, что это правильный ответ. –

+0

LOL очень верно. Страшная часть состоит в том, что из-за своей удивительности я думаю, что я заблудился! Галереи начинают скрываться, как и следовало ожидать, но навигация для обоих появляется вертикально справа. Нажатие на изображения ссылок эскизов не отображается, дает ошибку в firebug. http://drp.ly/Eu61R Это имеет смысл? – thatryan

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