Inutile d'envelopper vos images par intervalles. Vous pouvez simplement placer la classe pour chaque image directement dessus, et la changer de cette façon. En outre, vous voudrez peut-être faire attention aux fonctionnalités de .next()
, car cela pourrait ne pas fonctionner comme vous le souhaitez. Il saisit seulement le immédiat prochain frère. Cela signifie que s'il y a des frères et sœurs entre l'élément sur lequel vous l'appelez et celui que vous recherchez, vous ne le trouverez pas.
Vérifiez la documentation .next()
: http://api.jquery.com/next/
Essayez plutôt à l'aide .nextAll()
avec un sélecteur de filtre pour trouver l'élément que vous voulez.
Documentation pour .nextAll()
: http://api.jquery.com/nextAll/
Cela étant dit, voici une démo qui fait ce que vous voulez (je pense): http://jsfiddle.net/Ender/9eXnW/1/
Fondamentalement, ce que vous voulez faire est assurez-vous que vous avez la visibilité de chacune des images définies correctement pour commencer, puis sélectionnez-les et appelez .toggle()
sur eux dans votre événement de clic.
Vérifiez le code:
$(function() {
$('.entry').hide();
$('.header-person').click(function(e) {
e.preventDefault();
$(this).nextAll('.entry:first').slideToggle("fast");
$(this).children('.close-icon, .open-icon').toggle();
});
});
De plus, je l'ai changé votre return false;
à e.preventDefault()
$ (this) .nextAll (» close-icône. Tout d'abord, .Open-icon: premier ').basculer(); Cela ne fonctionne pas pour moi ... rien n'arrive aux icônes – TikaL13
Ah, je vois. Votre HTML est un peu différent de ce à quoi je m'attendais. Voir ma réponse mise à jour. – Ender