.load()関数があることを知っている選択したタブをリロードする方法はありますか?しかし、タブインデックスが必要であり、選択したタブIDを取得する方法が見当たらないようです。
更新:jQuery 1.9では、selected
オプションの名前がactive
に変更されました。 attommanの答えを参照してください。
現在選択されているインデックスを取得するには、tabs('option','selected')
関数を使用します。
たとえば、ボタンがある場合#button
(そしてその #tabs
要素はタブになります)インデックスを取得する場所で、次の手順を実行します。
$("#button").click(function() {
var current_index = $("#tabs").tabs("option","selected");
});
これがデモです: http://jsfiddle.net/sVgAT/
var current_index = $("#tabs").tabs("option","selected");
$("#tabs").tabs('load',current_index);
また、jQuery 1.9以降では、次のようにします。
var current_index = $("#tabs").tabs("option","active");
$("#tabs").tabs('load',current_index);
Simenには正解がありましたが、JQuery UI1.9以降は非推奨になりました。
http://jqueryui.com/upgrade-guide/1.9/#deprecated-selected-option-renamed-to-active
「選択済み」の代わりに「アクティブ」を使用するようになりました
したがって、コードは次のようになります。
var current_index = $("#tabs").tabs("option","active"); $("#tabs").tabs('load',current_index);
他の誰かがこの質問に出くわし、私のようにjQuery EasyUIのタブを使用している場合、上記のSimenの回答は機能しません。むしろ、タブを更新するには、次を使用します。
var tab = $('#tt').tabs('getSelected');
tab.panel('refresh');
ここで、tt
は、を介して作成されたタブグループのid
です。
<div id="tt" class="easyui-tabs">
これを機能させることができましたが、アクティブでないときに最初のタブが2回読み込まれるようになりました。誰かがこれについてこれ以上のアドバイスを持っているなら、それは大いにありがたいです。
上記のように、リクエストはサーバーに対して2回行われていますが、最初のリクエストは成功したため、2番目のリクエストはキャンセルされます。これが問題かどうかわからない..?しかし、コンソールでそれを見て安心していません
constructor: (@element) ->
@tabIndex = 0
@tabs = @element.find('#tabs')
@tabs.tabs
spinner: "Loading.."
cache: false
ajaxOptions:
cache: false
error: ( xhr, status, index, anchor ) ->
$( anchor.hash ).html "Couldn't load this tab. We'll try to fix this as soon as possible."
#add custom load to make sure they always reload even the current tab when clicked
@element.find('ul li a').click (e) =>
if @tabIndex is @tabs.tabs('option', 'selected')
@tabs.tabs 'load', @tabs.tabs('option', 'selected')
@tabIndex = @tabs.tabs('option', 'selected')
Cookie用のこのプラグインをダウンロードします。
http://plugins.jquery.com/cookie/
JQueryCookieをページに挿入します
<script src="jquery.cookie.js"></script>
そしてこれを追加します:
$(".tabs").click(function() {
//getter , get the active tab
var active = $( "#tabs" ).tabs( "option", "active" );
$.cookie("tabs_selected", active);
});
var cookieValue = $.cookie("tabs_selected");
// setter, set the active tab stocked
$( "#tabs" ).tabs( "option", "active",cookieValue );