1

だから私は JQuery UI アコーディオンを持っており、各折り畳みの中にいくつかのタブがあります。開いているアコーディオン フォールドで、現在開いているタブのインデックスを取得しようとしています。以前のバージョンの JQuery で機能するソリューションがありました。

var active_tab = $(".accordion.ui-accordion-content-active.tabs").find("div:not(.ui-tabs-hide)").index()-1;

しかし、JQuery のバージョンを更新してから、これを機能させることができず、常に「-2」が返されます。

私も次のようなことを試しました:

var curTab = $('.accordion .ui-accordion-content-active .ui-tabs-active');
active_tab = curTab.index();

しかし、これもまた、選択したタブに関係なく、-1 を与えるだけです。

この動作を示す JSFiddle がここにあります。

明確にするために、更新の合間にページの状態を記憶できる必要があります。したがって、アクティブなアコーディオン インデックスとアクティブなタブ インデックスが必要です。これらは Cookie に格納され、更新時にチェックされます。適切なアコーディオンとタブが開かれ、ページは更新前と同じように表示されます。ヒントをいただければ幸いです。よろしくお願いします!

4

3 に答える 3

3

activeアクティブなアコーディオンとタブを見つけるために jQuery UI が提供する適切な関数 (オプション) を使用する必要があります。

var activeAccordionIndex = $( ".accordion" ).accordion( "option", "active");

var activeTabIndex = $(".accordion > div:eq(" + accordionIndex + ")").find(".tabs").tabs( "option", "active");

実施例

于 2013-03-05T18:49:20.273 に答える
1

jQuery タブの.activate()イベントを使用します。

ジャバスクリプト:

$( ".accordion" ).accordion({
    active: false,
    heightStyle: "content",
    collapsible: true
});

$( ".tabs" ).tabs({
 activate: function( event, ui ) {
     active_tab = ui.newTab.index();
 }
});

デモ: http://jsfiddle.net/dirtyd77/NALMd/4/

お役に立てれば!

于 2013-03-05T18:45:31.767 に答える
1

提示した jsFiddle コードに基づいて、次のように変更する必要があります。

var curTab = $('.accordion h3.ui-state-active');
active_tab = curTab.index('h3');

まず、アクティブなタブを選択し、それから正しいインデックスを取得します

于 2013-03-05T18:48:47.457 に答える