Je suis peut-être un idiot, mais comment garder plusieurs sections ouvertes dans l'accordéon de l'interface utilisateur jQuery? Les démos ont toutes un seul ouvert à la fois ... Je recherche un système de type de menu réductible.
javascript
jquery
html
jquery-ui
Marcheur
la source
la source
Réponses:
Cela a été discuté à l' origine dans la documentation de l'interface utilisateur jQuery pour Accordion :
"Je suis peut-être un idiot" - Vous n'êtes pas un idiot si vous ne lisez pas la documentation, mais si vous rencontrez des problèmes, cela accélère généralement la recherche d'une solution.
la source
Assez simple:
la source
create: function(event) { $(event.target).accordion( "activate", false ); }
pour commencer effondré.create: function(event) { $(event.target).accordion( "activate", false ); }
définir l'option:{active: false}
Publié dans un fil similaire, mais j'ai pensé que cela pourrait également être pertinent ici.
Réaliser cela avec une seule instance de jQuery-UI Accordion
Comme d'autres l'ont noté, le
Accordion
widget n'a pas d'option API pour le faire directement. Cependant, si pour une raison quelconque vous devez utiliser le widget (par exemple, vous maintenez un système existant), il est possible d'y parvenir en utilisant lebeforeActivate
option du gestionnaire d'événements pour subvertir et émuler le comportement par défaut du widget.Par exemple:
Voir une démo de jsFiddle
la source
ui-accordion-header-active
Ou encore plus simple?
la source
J'ai fait un plugin jQuery qui a le même look que jQuery UI Accordion et peut garder tous les onglets \ sections ouverts
Vous pouvez le trouver ici
http://anasnakawa.wordpress.com/2011/01/25/jquery-ui-multi-open-accordion/
fonctionne avec le même balisage
Code Javascript
MISE À JOUR: le plugin a été mis à jour pour prendre en charge l'option des onglets actifs par défaut
MISE À JOUR: Ce plugin est désormais obsolète.
la source
En fait, je cherchais sur Internet une solution à ce problème pendant un certain temps. Et la réponse acceptée donne la bonne réponse «par le livre». Mais je ne voulais pas accepter cela, alors j'ai continué à chercher et j'ai trouvé ceci:
http://jsbin.com/eqape/1601/edit - Exemple en direct
Cet exemple extrait les styles appropriés et ajoute la fonctionnalité demandée en même temps, avec un espace pour écrire, ajoutez votre propre fonctionnalité à chaque clic d'en-tête. Permet également à plusieurs div d'être entre les "h3".
Code HTML:
la source
J'ai trouvé une solution délicate. Permet d'appeler la même fonction deux fois mais avec un identifiant différent.
Code JQuery
Code HTML
la source
class
comme suggéré par d'autres, cela signifie que vous ne vous répétez pas ( DRY )Simple, créez plusieurs div d'accordéon représentant chacun une balise d'ancrage comme:
Cela ajoute du balisage. Mais fonctionne comme un pro ...
la source
Simple: active l'accordéon sur une classe, puis crée des divs avec ceci, comme plusieurs instances d'accordéon.
Comme ça:
JS
HTML
https://jsfiddle.net/sparhawk_odin/pm91whz3/
la source
Appelez simplement chaque section de l'accordéon comme son propre accordéon. active: n sera 0 pour le premier (donc il s'affichera) et 1, 2, 3, 4, etc. pour le reste. Puisque chacun est son propre accordéon, ils n'auront tous qu'une seule section, et le reste sera réduit pour commencer.
la source
Encore plus simple, faites-le étiqueter dans l'attribut de classe de chaque balise li et demandez à jquery de parcourir chaque li pour initialiser l'accordéon.
la source
Sans l'accordéon jQuery-UI, on peut simplement faire ceci:
Et js
https://jsfiddle.net/gayan_dasanayake/6ogxL7nm/
la source
ouvrez jquery-ui - *. js
trouver
$.widget( "ui.accordion", {
trouver à l'
_eventHandler: function( event ) {
intérieurchangement
à
avant
active.removeClass( "ui-accordion-header-active ui-state-active" );
ajouter
if (typeof(active) !== 'undefined') {
et fermer}
prendre plaisir
la source
Vous utilisez simplement la fonction jquery each ();
la source