これが自由形式の質問であることをお詫びしますが、途方に暮れています。
Jquery UIのバージョン1.9以降、複数のページにわたるタブのアクティブな状態を保存するために、cookie
オプションを使用して非推奨になりました。 http://jqueryui.com/upgrade-guide/1.9/#deprecated-cookie-option
今、これを達成する方法に関する他のドキュメントを見たことはありません!だから私は頭をかいてしまいました。
私の最善の推測は、ある種のevent
を使用してCookieを作成し、次にCookieをロードすることです。または、タブのアクティブ状態を複数のページにまたがってユーザー設定で保存する他の方法はありますか?
今日も同じ問題が私をかみました。うまくいくようです:
次のコードフラグメントを使用します。
$( ".selector" ).tabs({
active : $.cookie('activetab'),
activate : function( event, ui ){
$.cookie( 'activetab', ui.newTab.index(),{
expires : 10
});
}
});
これにより、「activetab」と呼ばれるCookieが設定され、10日後に有効期限が切れます(その他のオプションについては、 jquery.cookieドキュメント を参照)。タブがクリックされるたびに、現在選択されているタブが記憶されます。このCookieは初期化時に読み取られ、最後に保存されたタブが表示されます。初めてページにアクセスすると、タブが折りたたまれます。
localStorage を使用してこれを行う、レイアウトに依存しない短い方法:
$("#tabs").tabs({
active: localStorage.getItem("currentIdx"),
activate: function(event, ui) {
localStorage.setItem("currentIdx", $(this).tabs('option', 'active'));
}
});
カスタムデータ属性を使用してそれを行うレイアウト固有の方法(属性値がスクリプトの他の場所で何らかの方法で使用される場合に役立つ可能性があります)。
jQuery UI:
$("#tabs").tabs({
active: localStorage.getItem("currentTabIndex"),
activate: function(event, ui) {
localStorage.setItem("currentTabIndex", ui.newPanel[0].dataset["tabIndex"]);
}
});
HTMLレイアウトの例:
<div id="tabs">
<div id="tabs-1" data-tab-index="0">
tab 1 stuff...
</div>
<div id="tabs-2" data-tab-index="1">
tab 2 stuff...
</div>
<div id="tabs-3" data-tab-index="2">
tab 3 stuff...
</div>
</div>
イベントタブがアクティブになり、sessionStorageまたはlocalStorageに保存されます。
$(function() {
var selectedTabId = sessionStorage.getItem("selectedTab");
selectedTabId = selectedTabId === null ? 0 : selectedTabId; //your default being 0
$("#tabs").tabs({
active: selectedTabId,
activate : function( event, ui ) {
selectedTabId = $("#tabs").tabs("option", "active");
sessionStorage.setItem("selectedTab", selectedTabId);
}
});
});
単に:
activate: function(event, ui) {
localStorage.setItem("accIndex", $(this).tabs("option", "active"))
},
active: parseInt(localStorage.getItem("accIndex"))
HTML5のlocalStorage機能を使用すると、問題の解決策が得られ、この種のことを行うための推奨される方法になりました。 Cookieを使用すると、すべてのWeb要求および応答に追加のデータが追加されます。
LocalStorageは ブラウザでサポートされている IE8と同じくらい古く、IE6とIE7のサポートが本当に必要な場合は shim to do it があります。
[〜#〜] html [〜#〜]
<div class="mytab" id="mytab_1">
<ul>....</ul>
<div id="xx1">...</div>
...
</div>
[〜#〜] js [〜#〜]
currTabIndex=sessionStorage['mytab_1'];
そしてtabfuntionの呼び出し
$('.mytab').tabs({
active:currTabIndex,
load:function(event,ui){
sessionStorage[''+this.id]=(ui.panel.index()-1);
}
});
これがお役に立てば幸いです。
次のようなアクティブなオプションを使用して、アクティブなタブを設定できます。
$( ".selector" ).tabs({ active: 1 });
Cookie以外のWebページに値を渡す方法はたくさんあります。たとえば、クエリパラメータと非表示フィールドを使用できます。次に、jQueryのonloadの例を使用していずれかの例を読み取るonloadスクリプトを作成します。 $(function(){})。
クエリ文字列を読むには、メソッドを提供するこのページをチェックしてください
function getParameterByName( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
隠しフィールドを読み取ります。
$( ".selector" ).tabs({ active: $('#my-hidden-fiel').val() });
私は、この機能を削除するというjquery uiの決定に同意します。これは、Cookieは実際にはセッションを永続化するためにのみ使用されるべきであり、たとえばフィールドやタブを形成するためではないためです。