J'ai posté ce message dans un fil similaire, mais j'ai pensé qu'il pourrait être pertinent ici aussi.
Réaliser cela avec une seule instance de jQuery-UI Accordion
Comme d'autres l'ont fait remarquer, la Accordion
n'a pas d'option API permettant de le faire directement. Cependant, si pour une raison quelconque vous doit utiliser le widget (par exemple, si vous maintenez un système existant), il est possible de le faire en utilisant l'option beforeActivate
pour subvertir et émuler le comportement par défaut du widget.
Par exemple :
$('#accordion').accordion({
collapsible:true,
beforeActivate: function(event, ui) {
// The accordion believes a panel is being opened
if (ui.newHeader[0]) {
var currHeader = ui.newHeader;
var currContent = currHeader.next('.ui-accordion-content');
// The accordion believes a panel is being closed
} else {
var currHeader = ui.oldHeader;
var currContent = currHeader.next('.ui-accordion-content');
}
// Since we've changed the default behavior, this detects the actual status
var isPanelSelected = currHeader.attr('aria-selected') == 'true';
// Toggle the panel's header
currHeader.toggleClass('ui-corner-all',isPanelSelected).toggleClass('accordion-header-active ui-state-active ui-corner-top',!isPanelSelected).attr('aria-selected',((!isPanelSelected).toString()));
// Toggle the panel's icon
currHeader.children('.ui-icon').toggleClass('ui-icon-triangle-1-e',isPanelSelected).toggleClass('ui-icon-triangle-1-s',!isPanelSelected);
// Toggle the panel's content
currContent.toggleClass('accordion-content-active',!isPanelSelected)
if (isPanelSelected) { currContent.slideUp(); } else { currContent.slideDown(); }
return false; // Cancels the default action
}
});
18 votes
Regardez ceci jsfiddle.net/DkHyd
0 votes
Votre plugin est parfait ! Merci beaucoup, mec !