关闭活动手风琴项目

时间:2013-11-22 08:41:42

标签: javascript jquery accordion

我找到了这个甜美的手风琴菜单,我想稍微修改一下。我想添加一个关闭函数,所以如果我点击活动的h2它会向上滑动并关闭。我怎样才能做到这一点?

$(function() {
    $('#accordion .content').hide();
    $('#accordion h2:first').addClass('active').next().slideDown('slow');
    $('#accordion h2').click(function() {
        if ($(this).next().is(':hidden')) {
            $('#accordion h2').removeClass('active').next().slideUp('slow');
            $(this).toggleClass('active').next().slideDown('slow');
        }
    });
});

http://jsfiddle.net/tovic/CzE3q/

2 个答案:

答案 0 :(得分:3)

您需要检查您点击的项目是否已经有active课程。试试这个:

$('#accordion .content').hide();
$('#accordion h2:first').addClass('active').next().slideDown('slow');

$('#accordion h2').click(function () {
    var openPanel = !$(this).hasClass('active')
    $('#accordion h2').removeClass('active').next().slideUp('slow');
    openPanel && $(this).toggleClass('active').next().slideDown('slow');
});

Example fiddle

答案 1 :(得分:0)

else块添加到click事件处理程序,如果它未被隐藏,则会关闭该窗格。

$(function() {
    $('#accordion .content').hide();
    $('#accordion h2:first').addClass('active').next().slideDown('slow');
    $('#accordion h2').click(function() {
        if($(this).next().is(':hidden')) {
            $('#accordion h2').removeClass('active').next().slideUp('slow');
            $(this).toggleClass('active').next().slideDown('slow');
        }else{
            $('#accordion h2').removeClass('active').next().slideUp('slow');
        }
    });
});

JS小提琴: http://jsfiddle.net/CzE3q/720/