2

私は、一度に 1 つの項目だけが展開されるようにしたいことを除いて、現在正常に動作するアコリダン トグルを持っています。あるアイテムを開いて別のアイテムを開こうとすると、元のアイテムを閉じてほしいです。

これを機能させるためにコードに何を追加する必要があるかについて何か考えはありますか?

コードは次のとおりです。

$(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/

ありがとう!

4

2 に答える 2

1

正しい要素を表示する前に、internal( を使用して) class ですべての要素を非表示にするだけです。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/

于 2012-11-08T17:53:44.130 に答える
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();

フィドルをチェック

于 2012-11-08T17:57:00.517 に答える