Si vous voulez/déplier Je vous suggère de ne faire une structure similaire à celle-ci:
See this example on jsFiddle.
Chaque a
est liée à un div
. Le href
est le sélecteur pour le contenu div.
<div id="container">
<ul>
<li>Category 01 <a href="#cat01">[+]</a></li>
<li>Category 02 <a href="#cat02">[+]</a></li>
<li>Category 03 <a href="#cat03">[+]</a></li>
</ul>
<br />
<div id="categories">
<div id="cat01">content 01</div>
<div id="cat02">content 02</div>
<div id="cat03">content 03</div>
</div>
</div>
J'utilise ici toggle
, chaque fois que vous cliquez sur l'élément l'indice de la fonction augmente de 1 jusqu'à atteindre le maximum, il retourne à 0. Donc, avec deux fonctions, il alterne entre eux dans chaque Cliquez sur. Ce faisant, vous pouvez basculer entre [-]
et [+]
. Cela ne fonctionnera correctement que si toutes les catégories commencent avec le même état. Si elles ne sont pas nécessairement effondrées lors de la première exécution, vous devrez modifier cette fonction pour vérifier le contenu a
pour [+]
ou [-]
.
$("#container ul > li > a").toggle(function (e) {
var $this = $(this);
$this.text("[-]"); // change the text
// select content div using href as the selector
$($this.attr("href")).css("display", "block");
// prevent any other behavior
e.preventDefault();
},
function (e) {
var $this = $(this);
$(this).text("[+]"); // switch to collapsed view
$($this.attr("href")).css("display", null);
e.preventDefault();
});
NICE! C'est exactement ce dont j'avais besoin! :) –
C'est la réponse que je vais choisir car cela me fait apprendre quelque chose de nouveau, mais sur mon site ça ne marche pas maintenant ... peux-tu me signaler le problème? – menardmam
@ marc-andre menard Le problème est que sur votre site, vous avez une balise d'ancrage à l'intérieur de cette h3. Vous devez donc récupérer le texte de l'ancre au lieu du texte de l'h3. J'ai mis à jour ma réponse pour refléter cela. S'il vous plaît essayez ça. – Alex