我正在尝试创建一个手风琴菜单,可以同时展开多个面板。我已经在jQuery UI API中试图找到它,但还没有找到合适的方法。
如果有使用jQuery UI手风琴实现此功能的方法,请告诉我。
我正在尝试创建一个手风琴菜单,可以同时展开多个面板。我已经在jQuery UI API中试图找到它,但还没有找到合适的方法。
如果有使用jQuery UI手风琴实现此功能的方法,请告诉我。
正如其他人所指出的,Accordion
小部件没有直接执行此操作的API选项。但是,如果您必须使用该小部件,则可以使用beforeActivate
事件处理程序选项来破坏并模拟小部件的默认行为从而实现此目的。
例如:
$('#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; // Cancel the default action
}
});
您可以编写多个叠放的手风琴,每个手风琴只有一个面板。这样,各个面板可以单独切换。
按照定义,手风琴是一组可以以某种方式切换并展开的元素。但您可能不需要这样的功能,只需要一组可展开的元素。使用jQuery非常容易实现。通常只需要以下代码:
$('.my-heading-class').on('click', function() {
$(this).next('.my-content-class').slideToggle();
});
<div class="my-heading-class">My Heading</div>
<div class="my-content-class">My Content</div>