Jquery Accordéon Fermer puis Ouvrir
J'ai mis en place un certain nombre de boutons sur une page à l'aide de l'accordéon jquery plugin afin que je puisse mettre en œuvre développer tout et l'effondrement de toutes les fonctionnalité.
Chaque ID de l'élément est-il propre à l'accordéon et le code ci-dessous fonctionne pour fermer tous peu importe ceux qui sont déjà ouverts:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", -1)
;
Mon problème est avec l'expansion de tous. Lorsque je les ai tous développez avec ce code:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", 0)
;
Certains vont contrat et certains vont développer basée sur si oui ou non ils sont déjà ouvertes.
Mon idée pour corriger ce fut l'effondrement tous puis les étendre à tous lors de la développer tout a été cliqué. Ce code toutefois de ne pas s'exécuter correctement:
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", -1)
;
$("#contact, #address, #email, #sales, #equipment, #notes, #marketingdata")
.accordion("activate", 0)
;
Il ne touche que la deuxième commande et de ne pas fermer toutes les premières. Des suggestions?
source d'informationauteur Jon
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas exactement sûr de ce que vous êtes après, mais c'est ma meilleure supposition. De tous vos accordéons, vous voulez de la "ouvert à tous" pour ouvrir tous les accordéons qui sont fermés (qui est, non section est de montrer). J'aimerais le faire en utilisant
filter()
Est que tout ce que vous après?
Modifier pour expliquer que la fonction de filtre:
La fonction de filtre passe juste votre sélection actuelle à travers un filtre, en enlevant tout ce qui ne correspond pas. Il a deux formes différentes: l'un où vous passez régulièrement jQuery requête, comme je l'ai fait ci-dessus, et d'autres où vous pouvez définir une fonction de filtre. Si la fonction renvoie la valeur false, alors l'élément est supprimé.
Dans ce cas, la requête supprime tout ce qui n'est pas (
:not
) ont (:has
) un enfant de la classe "selected" (.selected
). J'ai utilisé le.selected
sélecteur ici parce que c'est ce que l'accordéon s'ajoute à la actuellement-ouvrez le panneau.Si vous n'aviez qu'un accordéon, ou que vous avez donné à chacun de vos accordéons une sorte d'identifiant, comme un nom de classe, vous pouvez réduire considérablement le script en entier. Disons que pour chaque élément que vous souhaitez transformer en un accordéon, vous lui donnez la classe "accord".
C'est beaucoup plus lisible et maintenable, puisque vous pouvez facilement ajouter d'autres accordéons dans le futur si vous le souhaitez et ce sera le gérer.
La documentation de filtre est ici: http://docs.jquery.com/Traversing/filter
J'ai eu le même problème et l'a résolu avec un peu de code court levier de JQuery() fonction de fermeture pendant la mise au point d'un élément [0] de sorte que la navigation normale peut reprendre.
http://spstring.jeffthink.com/?p=49