0

私は素晴らしい作品のアコーディオンを持っています。アコーディオンのすべてのフラップを検索する方法を見つけようとしています。

jQuery アコーディオン使用時にページ上の文字列を検索 (Ctrl+F)

リンクで destroy メソッドを使用し、別のリンクで再初期化しましたが、これを 1 つのボタンで切り替えることができればすばらしいと思います。((私はもともとこの解決策なしでこの質問をしたので、以下の答えはこれだけです。より良い解決策が見つかるまでは受け入れません))

$(document).ready(function() {
    $("#hide").click(function() {
        $(".accordion").accordion("destroy");
    });

    $("#show").click(function() {
        $(".accordion").accordion({
            navigation  : true,
            collapsible : true,
            heightStyle : "fill",
            active      : 
        });
    });
});

アコーディオン全体をjQueryで切り替えることもできましたtoggle()が、これでは全体が消えてしまいます。私が望むのは、誰かがブラウザーで JavaScript を無効にしたかのように、div 構造を残したまま、アコーディオン機能を切り替えることです。

したがって、上記の種類は私が望むことを行いますが、実際には、より良い解決策は実際にクラスを削除する.accordionことです。アコーディオンを破棄すると、実際にはいくつかのものが壊れますが、これは望ましくありません。

私はこれと同じくらい簡単だと思ったが、うまくいかない:

$(document).ready(function() {
    $("#hide").click(function() {
        $("#accordion").removeClass(".accordion");
    });

    $("#show").click(function() {
        $("#accordion").addClass(".accordion");
    });
});

これは、私が指示しているクラスを追加および削除しているように見えますが、最初の削除では、アコーディオン クラスを削除してアコーディオン自体を削除していません。

4

2 に答える 2

0

破棄と再ロードは非常に単純な解決策です。1 つのボタンの側面は、ドキュメント準備完了関数に入るこのイベントで解決されます。

// event to destroy accordion and make it's content searchable
$("#open-1").on("click",function() {

    // if the button says Enable reload to bring the accordion back
    if ($(this).html() == "Enable") {
        location.reload();
    }

    // otherwise destroy the accordion and change the button to Enable
    else {
        $("#accord-1").accordion('destroy');
        $(this).html("Enable");
    }
});

ボタンには、最初は何でも好きなように言うことができます。重要なのは、「有効」に設定され、「有効」でページをリロードできるようにテストされていることです。任意の文字列にすることもできます。完全な例を次に示します。

于 2015-06-14T13:33:02.133 に答える