Vous devez ajouter/retirer le à chaque élément d'en-tête de classe "ui-état désactivé" (ie "<h3> ") vous voulez désactiver/activer. Ensuite, utilisez:
$("#accordion").on("accordionbeforeactivate", function(){
return ! arguments[1].newHeader.hasClass("ui-state-disabled");
})
Pour ajouter/supprimer une classe dyanamically, utilisez:
$("selector").addClass("ui-state-disabled");
$("selector").removeClass("ui-state-disabled");
Vous pouvez ajouter un meaningul attribut « id » à chaque élément d'en-tête pour simplifier la partie « sélecteur ». Par exemple, "step-1", "step-2", "step-n" pour chaque étape que l'utilisateur doit parcourir le long du workflow.
Vous pouvez essayer ce qui suit si vous êtes positifs au sujet de la position de l'onglet être désactiver a:
// Disable the first tab
$("#accordion > h3:first-child").addClass("ui-state-disabled");
// Make sure the fourth tab is enabled
$($("#accordion > h3")[3]).removeClass("ui-state-disabled");
Notez également que l'utilisation de « -désactivé ui-état » est en fait significatif, car il rend l'en-tête grisé (ou quel que soit votre thème).
Une autre note, si l'onglet que vous désactivez dynamiquement est actuellement actif, il ne fera rien de spécial (c'est-à-dire qu'il ne s'effondrera pas ou n'activera pas un autre onglet). Vous pouvez ajouter une logique supplémentaire pour activer un onglet par défaut ou faire quoi que ce soit d'autre.
il est dommage que l'utilisateur ne peut pas désactiver cette avance ... –
Un utilisateur peut absolument désactiver une telle chose en utilisant quelque chose comme Greasemonkey pour modifier le JavaScript pour le site. – artlung
bien sûr, et avec js console on peut jouer, changer la dom, exécuter le code js et ainsi de suite ... Dois-je m'en soucier quand je veux une belle représentation d'un accordéon? –