【问题标题】:jQuery accordion - how to collapse other open accordion panes when another one is openedjQuery手风琴 - 如何在打开另一个手风琴窗格时折叠其他打开的手风琴窗格
【发布时间】:2011-10-20 06:53:59
【问题描述】:

我有一个手风琴,我希望它具有以下功能:当用户单击要展开的链接时,其他展开的链接(如果有)将折叠。我知道这个功能是内置在手风琴插件中的,但我试图避免添加另一个库(jQuery UI)。

编辑:这是我现在拥有的代码(在 jsFiddle 上:http://jsfiddle.net/s2Jfs/2/):

    $('.accordion-toggler').addClass('toggle-plus');

    $('.accordion-toggler').click(function() {
        $this = $(this);
        if($this.hasClass('toggle-plus')) {
            $this.removeClass('toggle-plus').addClass('toggle-minus');
        } else {
            $this.removeClass('toggle-minus').addClass('toggle-plus');
        }
        $this.next('.mod-content').slideToggle();
    });

“mod-content”类附加到应该展开/折叠的内容。现在,如果您展开一项,将其保持打开状态,然后单击另一项,您将拥有多个展开区域。如何折叠除活动链接之外的其他链接?

【问题讨论】:

  • 能否提供jsfiddle.net 或演示站点?
  • 请注意,$ 符号不是必需的 Javascript 变量 $this。您可以简单地使用this
  • 您可以尝试将此行移到顶部并使用兄弟姐妹而不是旁边来定位所有其他人:$this.siblings('.mod-content').slideToggle();,然后显示当前的。你能发布一些HTML吗?

标签: jquery jquery-ui-accordion


【解决方案1】:

你让这种方式变得比它必须的更复杂。如果您只是想让一个向下滑动而另一个向上滑动,请使用以下代码...

$('.accordion-toggler').click(function() {
    var targetElement = $(this).next('.mod-content');
    targetElement.slideToggle();
    targetElement.siblings('.mod-content').slideUp();
});

【讨论】:

  • 谢谢!这可以满足我的要求。但是,如果需要,我仍然希望可以选择全部折叠(可能会有很长的列表)。
  • 我做了一些修改,应该可以满足您的需求。
  • 我添加了您的更改:jsfiddle.net/ellenchristine/s2Jfs/4。但是,现在您可以看到默认行为是不显示任何列表,因此您无法真正与链接进行交互。
  • 糟糕,抱歉。它有助于从您的 jsfiddle 中查看 html。我删除了第一个 $('.mod-content').slideUp();,现在它可以正常工作了。
  • 这正是我想要的。非常感谢!
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 2012-11-21
相关资源
最近更新 更多