2010-11-09 11 views
5

Sto provando a creare un effetto di commutazione usando le caselle + e - per mostrare e nascondere i div. E l'esempio http://theodin.co.uk/tools/tutorials/jqueryTutorial/index.htmlUso del jquery su singole div

Questo è lo script che sto utilizzando

$(function(){ 
     $('.block').hide(); 
      $('#show').toggle(function(){ 
        $('.block').show(); 
        $(this).attr("src","images/minus.jpg"); 
      },function(){ 
       $('.block').hide(); 
       $(this).attr("src", "images/plus.jpg"); 
      }); 
    }); 

Il codice HTML

<div id="show"> Open <img id="show" src="images/plus.jpg"/> </div> 
    <div class="block"> 
     Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    </div> 

funziona benissimo con un div, ma ho più e quando clicco uno, tutti spettacolo . C'è un modo per attivarli singolarmente usando il codice che ho?

risposta

1

Modificare il show ID ad un class come questo:

<div class="show"> Open <img src="images/plus.jpg" /> </div> 
<div class="block">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div> 

<div class="show"> Open <img src="images/plus.jpg" /> </div> 
<div class="block">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div> 

Poi il jQuery diventa:

$('.show').toggle(function(){ 
    $(this).next('.block').show(); 
    $(this).children("img").attr("src","images/minus.jpg"); 
},function(){ 
    $(this).next('.block').hide(); 
    $(this).children("img").attr("src", "images/plus.jpg"); 
}); 

Here's an example.

+0

Grazie! Funziona! Sapete se jquery consente di nascondere() il blocco div se, ad esempio, si fa clic in qualsiasi punto al di fuori del blocco o si attiva/disattiva un altro? – user499630

+0

btw, ho aggiornato il codice con gli URL delle immagini reali ma le immagini non cambiano – user499630

+1

Il mio male. Non ho provato con le immagini. Useremo 'children (" img ")' per farlo. Ho aggiornato l'esempio sopra per rispecchiarlo. –

1

Si sta modificando l'elemento src dell'elemento #show, quando si deve cambiarlo sul figlio <img>.

$(function() { 
    $('.block').hide(); 
    $('#show').toggle(function(){ 
     $('.block').show(); 
     $(this).children('img').attr("src","images/minus.jpg"); 
    },function(){ 
     $('.block').hide(); 
     $(this).children('img').attr("src", "images/plus.jpg"); 
    }); 
}); 

Questo utilizza .children() per ottenere l'elemento figlio <img> modo da poter cambiare la sua fonte.

Inoltre, lo <img> ha lo stesso ID del relativo genitore. Questo non è permesso. Gli ID devono essere unici.

+1

Inoltre, il div ha e ID di "spettacolo", così come l'img. Guarda, l'intero equipaggio è presente stasera! – karim79

+0

@ karim79 - Vero. Ho appena finito di aggiornare. : o) – user113716

+0

Grazie per il codice! Ho provato, ma ho avuto lo stesso problema per qualche motivo. Forse il mio HTML è sbagliato. Tuttavia, il codice fornito da Gert sembra funzionare. – user499630