Bonjour à tous,

Etant totalement novice en Javascript, je fais face à une difficulté depuis un petit moment.

J'ai plusieurs blocs (articles), avec à l'intérieur deux class, une visible, l'autre non. Je voudrais lorsque je clique sur une class fair apparaître l'autre mais seulement pour le bloc article en question et non pour l'ensemble des blocs.

<article>
    <div class="bloc_visible"></div>
    <div class="bloc_a_afficher" style="display:none;"></div>
</article>

<article>
    <div class="bloc_visible"></div>
    <div class="bloc_a_afficher" style="display:none;"></div>
</article>

<article>
    <div class="bloc_visible"></div>
    <div class="bloc_a_afficher" style="display:none;"></div>
</article>

Avec la fonction Javascript suivante, lorsque je clique sur la class "bloc_visible" dans l'un des blocs article, toutes les class "bloc_a_afficher" apparaissent, or je souhaite afficher cette class uniquement dans le bloc article en question.

$( ".bloc_visible" ).click(function() {
    $( ".bloc_a_afficher" ).toggle(0);
});

Pourriez-vous m'éclairer sur le sujet.

Par avance merci.

5 réponses


SimonAndGarfunkel
Réponse acceptée

Salut passealasuite,

voici une solution possible à ton problème : lien jsfiddle

Salut SimonAndGarfunkel,

Merci pour ta réponse, c'est exactement ce que je voulais faire.
Même si je pense avoir compris le principe, pourrais-tu m'expliquer ta fonction Javascript (pour comprendre le code) ?

Encore merci !

J'ai trouvé ce que je cherchais sur ta fonction.
Pour ceux qui ne comprendraient pas la fonction parent()

Explication :

$( ".bloc_visible" ).click(function() {
    $(this).parent().find('.bloc_a_afficher').toggle(0);
});

$(this) : je récupère l'élément sur lequel le click s'est produit (soit une div.bloc-visible)
parent() : me donne son parent direct (soit article)
find('.bloc_a_afficher') : dans cet article, je recherche l'élément ayant la class .bloc_a_afficher

Voilou !

Parfait !
Merci beaucoup pour ton aide !