In un mio articolo di qualche tempo fa mi si chiede come ottenere l’effetto toggle su elementi multipli controllabili indipendentemente; ho pensato, invece di rispondere al commento con delle semplici indicazioni, perchè non scrivere un altro articolo che spiegasse nello specifico il comportamento di questo toogle multiplo? Diciamo che le cose sono simili sino al punto in cui bisogna scrivere il codice jQuery:
[code lang=”javascript”]
<script type="text/javascript">
// questo spinge jQuery a dire che siamo pronti
$(document).ready(function() {
// questo testo serve per i link Mostra/Chiudi
var showText=’Mostra’;
var hideText=’Chiudi’;
// determina se il contenuto è visibile sin dall’inizio
var is_visible = false;
$(‘.toggle’).prev().append(‘ (<a href="#" class="toggleLink">’+showText+'</a>)’);
// mostra tutti gli elementi con la class ‘toggle’
$(‘.toggle’).hide();
// cattura il click del link
$(‘a.toggleLink’).click(function() {
// modifica la visibilità
is_visible = !is_visible;
// cambia le dipendenze degli elementi
$(this).html( (!is_visible) ? showText : hideText);
// toggle the display – uncomment the next line for a basic "accordion" style
//$(‘.toggle’).hide();$(‘a.toggleLink’).html(showText);
$(this).parent().next(‘.toggle’).toggle(‘slow’);
// ritorno
return false;
});
});
</script>
[/code]
Questo codice va posizionato subito dopo la stringa <?php wp_head(); ?> A questo punto non ci resta che richiamare il tutto nell’HTML:
[code lang=”html”]
<h3>Titolo H3</h3>
<div class="toggle"><p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce ac molestie ipsum. Nunc luctus ultrices metus in convallis. Duis eros ipsum, ultricies a hendrerit et, vulputate et nulla. Nulla facilisi. Aliquam egestas dapibus eleifend. In arcu magna, tincidunt ut mollis nec, pulvinar ut lacus. Aenean ornare auctor ipsum, sit amet vulputate purus pretium ut.</p></div>
<h4>Titolo H4</h4>
<p class="toggle">Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce ac molestie ipsum. Nunc luctus ultrices metus in convallis. Duis eros ipsum, ultricies a hendrerit et, vulputate et nulla. Nulla facilisi. Aliquam egestas dapibus eleifend. In arcu magna, tincidunt ut mollis nec, pulvinar ut lacus. Aenean ornare auctor ipsum, sit amet vulputate purus pretium ut.</p>
<p>Lista di elementi</p>
<ul class="toggle">
<li>Elemento di una lista</li>
<li>Elemento di una lista; Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</li>
<li>Elemento di una lista.</li>
</ul>
[/code]
Ed ecco qui l’esempio finito. Se avete dubbi, ovviamente, sono a disposizione.
4 Commenti
Chiara
Ciao Egidio! Grazie mille per l’articolo, sei davvero gentilissimo! 🙂
Purtroppo l’effetto toggle non funziona! Non appare nessun “Mostra” e “Chiudi”, i paragrafi appaiono normalmente, sotto l’h3.
Ho provato ad aggiungere dopo h3 un <a class=”toggle” etc etc… ma leggendo meglio il codice Jquery ho capito che non è questo il problema!
In cosa sto sbagliando?
Grazie mille!!!
Egidio Murru
Ciao Chiara, ti ho caricato un esempio funzionante, così, magari dare uno sguardo direttamente al codice ti può aiutare di più.
Chiara
Ho aperto la sorgente della pagina di esempio che hai pubblicato e ho scoperto cosa non faceva funzionare il mio codice: il richiamo alla libreria JQuery salvata sul mio server. Rimandando come hai fatto tu alla libreria su http://ajax.googleapis.com funziona! Molto strano, perchè la versione è sempre 1.7! Comunque ti ringrazio di cuore per l’aiuto, sei stato davvero gentile. 🙂
Marco
Utilissimo e funzionante anche per me!
Grazie Egidio!