Comment avoir plusieurs galeries de cycle jquery à la page, une seule activité?

StackOverflow https://stackoverflow.com/questions/2489319

  •  21-09-2019
  •  | 
  •  

Question

Je voudrais avoir quelques galeries de cycle sur une page, mais une seule active à la fois, et les autres qui sont cachées. Idéalement cliquant sur un lien (miniature à partir d'une liste) activerait la prochaine galerie de cycle. Sens? fait ça avant tout le monde? Apprécierait des conseils, je vous remercie!

Était-ce utile?

La solution

Ok, maintenant que je l'ai vu votre site web, je peux voir que vous aurez besoin de quelque chose plus souple puisque vous avez environ 15 galeries pour contrôler. Donnez celui-ci un tourbillon:

$(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;
    });
});

Autres conseils

Non testé, mais quelque chose comme ça devrait être proche:

$(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;
    });
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top