2009-03-04 9 views
9

Ecco quello che ho (tutti generati dinamicamente, se questo fa la differenza):Qual è il miglior jQuery "fai clic su una miniatura e cambia l'immagine principale" modulo?

  • un elenco di immagini
  • una didascalia per ciascuna immagine
  • Una miniatura per ogni immagine

La pagina dovrebbe caricare con un'immagine a dimensione intera e tutte le miniature. Quando un utente fa clic su una miniatura, l'immagine a dimensione intera mostra quella nuova immagine con la sua didascalia. Se fanno clic su un'altra miniatura, l'immagine (e la didascalia) cambiano di nuovo.

Non è molto complesso. Ho messo insieme una soluzione un paio di mesi fa, ma ho bisogno di farlo di nuovo e sto guardando questo codice schifoso e pensando che ci deve essere un modo migliore (e conoscendo jQuery, qualcun altro l'ha già fatto, e fatto bene).

Pensieri? Link?

Grazie!

+0

Facciamo simili con leggera variazione. MouseOver Thumnail cambia l'immagine principale, ma non è appiccicosa, Fai clic sul pollice per rendere l'immagine principale appiccicosa.L'utente può passare il mouse su Thumbs per rivedere, quindi fare clic su quello desiderato; se il mouse passa sopra più pollici l'immagine principale verrà ripristinata quando mouse-OUT di tutti i pollici – Kristen

risposta

3

Qui è uno che sembra molto carino ed è scritto in jQuery: Photo Slider

Ed ecco un altro che mi piace un po 'meglio: Galleria

+0

Oooh, Galleria è carina ed esattamente quello che stavo cercando! Grazie! – Eileen

46

Molte delle risposte qui sono come sparare una mosca con un cannone !!

$('#thumbs img').click(function(){ 
    $('#largeImage').attr('src',$(this).attr('src').replace('thumb','large')); 
    $('#description').html($(this).attr('alt')); 
}); 

questo è tutto ciò che serve .. 4 linee di codice.

un'occhiata qui: gallery-in-4-lines

+3

con te. tutto il resto sembra eccessivo. –

+0

IO TOTALMENTE desidero che tutte le "risposte" siano così buone - che risposta perfetta e un ottimo punto di partenza ... aggiungi di più se ne hai bisogno, ma questo si riduce. - grazie – jpmyob

2

costruzione al largo di krembo99's answer he linked here, ho voluto condividere la mia soluzione, come avevo già caricato centinaia di foto quando il mio cliente aveva chiesto una funzione come questa. Con questo in mente, aggiungendo alcune righe extra al codice fornito, sono riuscito a ottenere una soluzione che si adattava ai miei parametri.

Stavo anche lavorando con immagini più piccole, quindi non ho avuto bisogno di passare attraverso la creazione di piccole versioni dello stesso file &.

$('.thumbnails img').click(function(){ 

// Grab img.thumb class src attribute 
// NOTE: ALL img tags must have use this class, 
// otherwise you can't click back to the first image. 

var thumbSrc = $('.thumb').attr('src'); 

// Grab img#largeImage src attribute 
var largeSrc = $('#largeImage').attr('src'); 

    // Use variables to replace src instead of relying on file names. 
    $('#largeImage').attr('src',$(this).attr('src').replace(thumbSrc,largeSrc)); 
    $('#description').html($(this).attr('alt')); 

}); 

Ecco come appare il mio HTML.

<img src="path/to/file1.jpg" id="largeImage" class="thumb"> 
    <div id="description">1st image Description</div> 

    <div class="thumbnails"> 

    <img src="path/to/file1.jpg" class="thumb" alt="1st image description"> 
    <img src="path/to/file2.jpg" class="thumb"alt="2nd image description"> 
    <img src="path/to/file3.jpg" class="thumb" alt="3rd image description"> 
    <img src="path/to/file4.jpg" class="thumb" alt="4th image description"> 
    <img src="path/to/file5.jpg" class="thumb" alt="5th image description"> 

    </div>