0

カスタムプラグインで開いているアコーディオンを覚えようとしています。最初のアコーディオンはデフォルトで開いているため、次のようになります。

var active = [0];

アコーディオンをクリックしてから読み取りlocalStorage、値を取得します。私のクリックイベント内:

var active = JSON.parse(localStorage.getItem(outerName)),
    tab = $(this).find('h3').index(ui.tab[0]);

if (tab in active) {
    delete active[tab];
} else {
    active[tab] = tab;
}
for (var i = 0; i < this.length; i++) {
    if (active[i] == null) {
        active.splice(i, 1);
        i--;
    }
}
localStorage.setItem(outerName, JSON.stringify(active));

これは機能しますが、最初のアコーディオンを削除してから 2 番目のアコーディオンをクリックすると、値が重複します[1,1]。毎回null値をすでに削除しているため、これが原因ですが、アコーディオンを切り替えるとオブジェクトから削除されるように値を適切に取得する方法がわかりません。

[0,3]= アコーディオン 1 と 4 が開いている

[0,1]= アコーディオン 1 と 2 が開いている

4

1 に答える 1

0

わかりましたので、アクティブな文字列からのみ数値を取得するようにプラグインにパッチを当てましたが、オブジェクトが壊れていたため、オブジェクトも変更しました。

if (tab in active && active[tab] !== null) {
    delete active[tab];
} else {
    active[tab] = tab;
}

[null,1,null] を取得していたので、null を上書きして値 [0,1,null] に置き換えるだけで、0 と 1 のみがプラグインによって読み取られます。

SOは自分の質問にすぐに答えます!

于 2013-05-04T07:09:56.687 に答える