jQuery手风琴单击一次单击时展开/折叠

jQuery手风琴单击一次单击时展开/折叠,jquery,accordion,double-click,Jquery,Accordion,Double Click,我从这里下载了我的手风琴:我的老板告诉我,他希望在用户点击每个标题时打开和关闭该功能 例如,当您单击一个标题时,它将打开;当您单击另一个标题时,它也将打开,但之前打开的标题将不会关闭,除非再次单击该标题 我可以通过更改以下代码来实现这一点: animateClose: function (elem, opts) { 为此: animateClose: function (elem) { 现在的问题是,标题需要单击一次而不是两次。有没有办法解决这个问题 这是完整的代码:

我从这里下载了我的手风琴:我的老板告诉我,他希望在用户点击每个标题时打开和关闭该功能

例如,当您单击一个标题时,它将打开;当您单击另一个标题时,它也将打开,但之前打开的标题将不会关闭,除非再次单击该标题

我可以通过更改以下代码来实现这一点:

    animateClose: function (elem, opts) {
为此:

    animateClose: function (elem) {
现在的问题是,标题需要单击一次而不是两次。有没有办法解决这个问题

这是完整的代码:

    <script type="text/javascript">
    $(document).ready(function() {

    //syntax highlighter
    hljs.tabReplace = ' ';
    hljs.initHighlightingOnLoad();

    //accordion
    $('h3.accordion').accordion({
    defaultOpen: 'section1',
    cookieName: 'accordion_nav',
    speed: 'slow',
    animateOpen: function (elem, opts) { //replace the standard slideUp with custom function
    elem.next().slideFadeToggle(opts.speed);
    },
    animateClose: function (elem) { //replace the standard slideDown with custom function
    elem.next().slideFadeToggle(opts.speed);
    }
    });
    $('h3.accordion2').accordion({
    defaultOpen: 'sample-1',
    cookieName: 'accordion2_nav',
    speed: 'slow',
    cssClose: 'accordion2-close', //class you want to assign to a closed accordion header
    cssOpen: 'accordion2-open',
    });

    //custom animation for open/close
    $.fn.slideFadeToggle = function(speed, easing, callback) {
    return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);
    };

    });
</script>

$(文档).ready(函数(){
//语法荧光笔
hljs.tabReplace='';
hljs.initHighlightingOnLoad();
//手风琴
$('h3.手风琴')。手风琴({
defaultOpen:'section1',
cookieName:“手风琴导航”,
速度:“慢”,
animateOpen:function(elem,opts){//用自定义函数替换标准的slideUp
elem.next().slideFadeToggle(选择速度);
},
animateClose:function(elem){//用自定义函数替换标准的slideDown
elem.next().slideFadeToggle(选择速度);
}
});
$('h3.手风琴2')。手风琴({
defaultOpen:'sample-1',
cookieName:“手风琴2号导航”,
速度:“慢”,
cssClose:'accordion2 close',//要分配给关闭的accordion头的类
cssOpen:“手风琴2打开”,
});
//用于打开/关闭的自定义动画
$.fn.slideFadeToggle=函数(速度、缓和、回调){
返回这个。设置动画({opacity:'toggle',height:'toggle'},速度,缓和,回调);
};
});

HTML:


如果通读源文件-
jquery.accordion.js
,您将看到以下代码:

//opens a accordion panel
function open($this, opts) {
    close(opts);
    //give the proper class to the linked element
    $this.removeClass(opts.cssClose).addClass(opts.cssOpen);

    //open the element
    opts.animateOpen($this, opts);

    //do cookies if plugin available
    if (useCookies(opts)) {
        // split the cookieOpen string by ","
        id = $this.attr('id');
        setCookie(id, opts);
    }
}
如您所见,此函数所做的第一件事是-

    close(opts);

即关闭所有打开的标题。我想如果你评论这一行,你会得到你所需要的。

请同时发布你的相关标记。供参考对于此类问题,您可以使用在线工具,如从jQuery UI accordion提交有问题的代码:注意:如果你想同时打开多个部分,不要使用手风琴。手风琴不允许同时打开多个内容面板,这需要付出很多努力。如果您正在寻找允许打开多个内容面板的小部件,请不要使用此小部件。“。在那一页上有一个例子,说明了如何在几行代码中进行多个扩展面板。我尝试过这样做,但没有什么不同。我仍然需要双击。这很完美,但如果我希望它最初关闭,我需要写什么呢?@JoshuaWaheed只需将第二行替换为这一行:
$accordioio.next('div').hide()
它将隐藏所有
div
,而不是索引。如果你想打开一个特定的文件,你可以这样做:
accordioio.next('div').hide().eq(2).show()这将在默认情况下打开第三部分,而隐藏所有其他部分。非常感谢。它正以我需要的方式完美地工作。嗨,我添加了一个名为“关闭”的文本,因为我需要手风琴在单击它时关闭,就像单击标题时关闭一样。有办法吗?@JoshuaWaheed我不想猜你把按钮放在哪里了。请更简洁地提问,并请准备/或/更新我们的演示,以便我可以看一看
//opens a accordion panel
function open($this, opts) {
    close(opts);
    //give the proper class to the linked element
    $this.removeClass(opts.cssClose).addClass(opts.cssOpen);

    //open the element
    opts.animateOpen($this, opts);

    //do cookies if plugin available
    if (useCookies(opts)) {
        // split the cookieOpen string by ","
        id = $this.attr('id');
        setCookie(id, opts);
    }
}
    close(opts);