微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery UI手风琴:一次打开多个面板

我正在尝试创建一个能够一次展开多个面板的手风琴。我试图在jQuery UI API中找到它,但是我还没有找到正确的方法

请让我知道如果有办法使用jQuery UI手风琴。

解决方法

正如其他人所指出的,“手风琴”小部件没有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
    }
});

jsFiddle demo

原文地址:https://www.jb51.cc/jquery/182988.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐