1

過去数日間、アコーディオンメニューの開いた状態を記憶するCookieを作成しようとしています(https://github.com/carhartl/jquery-cookieを使用)。Googleと以前の回答をここで調べました。しかし、これまでのところ、それを機能させることができませんでした。

アコーディオンメニューを生成しているコードは次のとおりです。

誰かがこれに光を当てるのを手伝ってくれるなら、私は感謝するでしょう。

4

3 に答える 3

3

私はこれのバージョンを少し前に書き、それをオンラインで公開しました:http: //jaaulde.com/test_bed/stickyaccordion/

次のコードを使用しました。

$(function () {
    var cookieName = 'stickyAccordion';

    $('#accordion').accordion({
        active: ($.cookies.get(cookieName) || 0),
        change: function (e, ui) {
            $.cookies.set(cookieName, $(this).find('h3').index(ui.newHeader[0]));
        }
    });
});

これは少し前のことなので、jQuery1.4.1とjQueryUI1.7.2を使用してまし

また、私自身の個人的なJavaScript /jQueryCookieライブラリを使用しました。あなたがcarhartlを使いたいなら、それは完全に有効な選択です。あなたはただ私の電話を彼の同等のものに置き換える必要があるでしょ$.cookies.set$.cookies.get

編集:お詫び申し上げます。質問されたjQueryとアコーディオンについて言及されているのを見て、jQueryUIのアコーディオンを意味していると思いました。ご覧のとおり、非常に簡単です。UIを使用していないため、この回答は有効でない場合があります。その場合は、しばらくしてから、既存のソリューションにCookieのサポートを追加できる可能性があります。

于 2012-12-28T17:51:00.013 に答える
0

Klaus Hartlの Cookie プラグインを使用して、このスニペットを作成しました。

cookieName = 'myHotCookie';

$(".accordion").accordion({
    'active' : (parseInt($.cookie(cookieName)) || false),
    'header' : 'h3',
    activate: function (event, ui) {
        $.cookie(cookieName,parseInt($(this).accordion('option','active')));
    }
});

idの取得は文字列としてレンダリングされるため、parseIntが必要なようです。

于 2013-07-04T15:48:24.660 に答える
0

私の場合、cms contao 3.x と jquery cookie プラグインがインストールされています。jquery 1.9(chrome/ff)で試してみましたが、次のコードで動作します:

var cookieName = 'myHotCookie';
    $(document).accordion({
        // Put custom options here
        heightStyle: 'content',
        header: 'div.toggler',
        collapsible: true,
        animated: 'slide',
        active : (parseInt($.cookie(cookieName)) || 0),
        activate: function (event, ui) {
            $.cookie(cookieName,parseInt($(this).accordion('option','active')));
        }
  });
于 2013-11-01T04:38:46.910 に答える