0

水平アコーディオンに使用しているこのスクリプトがあります。ここで機能を確認できます: http://jsfiddle.net/vXpPg/

クリックすると開いているスライドも閉じるようにしています。

どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2

2

どうぞ:

http://jsfiddle.net/vXpPg/1/

click最初にクリックしているセクションの幅を確認するように関数を変更しました。この幅があなたが書いたものと等しい場合、maxWidthそれを折りたたむだけであることがわかります(幅をminWidth設定に変更します)。そうでない場合、それは小さなセクションである必要があり、通常どおりに展開する必要があることがわかります (既に持っているコード)。

$("ul li").click(

function() {
    /*
     * I added this
     */
    if ($(this).width() == maxWidth) {
        $(this).animate({
            width: minWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
    } else {
        /*
         * You had this
         */
        $(lastBlock).animate({
            width: minWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
        $(this).animate({
            width: maxWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
    }
    lastBlock = this;
});​
于 2012-09-21T13:22:27.327 に答える
1

これで直ると思います:

lastBlock = $("#a1");
maxWidth = 450;
minWidth = 50;

$("ul li").click(

function() {
    if (lastBlock != this) {
        $(lastBlock).animate({
            width: minWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
        $(this).animate({
            width: maxWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
        lastBlock = this;
    } else {
        $(this).animate({
            width: minWidth + "px"
        }, {
            queue: false,
            duration: 400
        });
    }
});​
于 2012-09-21T13:25:46.280 に答える