jQuery:Accordion Toggle - 当兄弟姐妹打开时关闭Div

时间:2012-11-08 17:49:24

标签: jquery toggle

我有一个目前工作正常的accoridan切换,除了我想要它,所以一次只扩展一个项目。当你打开一个项目然后打开另一个项目时我会想要关闭原来的项目。

对于我应该添加到代码中以使其工作的任何想法?

以下是代码:

$(document).ready(function() {

$('.internal').hide();

$('.slider').click(function() {

    $(this).next('.internal').slideToggle();
}).toggle(function() {
    $(this).children("span").html("minus sign");
}, function() {
    $(this).children("span").html("plus sign");
});

});

我在这里设置了一个小提琴:http://jsfiddle.net/Lg9Mn/17/

谢谢!

2 个答案:

答案 0 :(得分:1)

在显示正确的元素之前,只需使用类internal隐藏所有元素(使用slideUp):

$(document).ready(function() {

    $('.internal').hide();

    $('.slider').click(function() {
        $('.internal').slideUp();
        $('.slider').not($(this)).children("span").html("plus sign");
        if($(this).next('.internal').css("display") == "none"){
            $(this).next('.internal').slideDown();
            $(this).children("span").html("minus sign");
        }else{
            $(this).next('.internal').slideUp();
            $(this).children("span").html("plus sign");
        }
    })
});

http://jsfiddle.net/Lg9Mn/30/

答案 1 :(得分:0)

试试此代码

$(document).ready(function() {

    $('.internal').hide();

    $('.slider').click(function() {
        $('.internal').not($(this).next('.internal')).hide();
        $('.slider').not($(this)).children("span").html("plus sign");

        if( $(this).next('.internal').is(':visible')){
            $(this).children("span").html("plus sign");
        }
        else{
            $(this).children("span").html("minus sign");
        }
        $(this).next('.internal').slideToggle();
    });
});

需要将此添加到您的点击事件

$('.internal').not($(this).next('.internal')).hide();

<强> Check Fiddle