2009-12-08 10 views
16

現在選択されているタブのインデックスを取得できますが、何とかIDにアクセスできます(ui.panel.idに相当します。現在選択されているタブのタブの順序が変更される可能性があるため、インデックスを使用しないことをお勧めします。将来のリリースで変更される可能性があるので、スタイルマークアップを使用しないことをお勧めします。これには方法がありますか?もしそうでなければ、私は何とかこのインデックスにアクセスするためにインデックスを使用できますか?他のアイデア?jQueryタブの現在選択されているタブIDが必要です

+0

質問の変動は次のようになります。インデックスからタブパネルを取得する方法はありますか? –

+0

[jQuery ui tabs]の重複可能性:タブ(div)のIDを取得する](http://stackoverflow.com/questions/1864219/need-currently-selected-tab-id-for-jquery-tabs) – mins

答えて

20

あなたが目に見えるパネルをターゲットに:visible pseudo-selectorを使用することができます:私はに投稿されたとおり

$("#tabs").tabs({ 
    activate: function (event, ui) { 
     console.log(ui.newPanel[0].id); 
    } 
}); 
+0

これはかなりうんざりです。たとえば、ページに複数のタブウィジェットがある場合はどうなりますか? –

+3

次に、より具体的なセレクタを指定します。 '$("#group1 .ui-state-active ")'となります。 – Sampson

+0

この解決法は私のためには機能しませんでした。代わりに私はこの答えを見つけました:http://stackoverflow.com/q/7967944/11992 – nikow

3

$("#tabs .ui-tabs-panel:visible").attr("id"); 

それはあなたがactivate eventからアクティブなタブを取得できることは注目に値しますthis questionへの回答には、これを達成するためのいくつかの方法があります。 jQuery documents

は、彼らが現在開いているタブのインデックスを検索するには、次の操作を行うことを提案する:あなたは、そのタブで多くのことを行う必要がある場合

var $tabs = $('#example').tabs(); 
var selected = $tabs.tabs('option', 'selected'); // => 0 

しかし、これは非現実的です。 なぜ実際の要素を取得するより現実的な解決法を提供していないのかわかりませんが、jQueryを使用すると簡単に自分で作成することができます。あなたがしたい場合id(または実際にhref)選択したタブから

var curTab = $('.ui-tabs-panel:not(.ui-tabs-hide)'), 
    curTabIndex = curTab.index(), // will get you the index number of where it sits 
    curTabID = curTab.prop("id"), // will give you the id of the tab open if existant 
    curTabCls = curTab.attr("class"); // will give you an array of classes on this tab 
     // etc .... 
// now, if you wanted a little more depth, for instance specific tabs area (if you have multiple tabs on your page) you can do simply add to your selector statement 
var curTab = $('#myTabs_1 .ui-tabs-panel:not(.ui-tabs-hide)'); 
// then you can make simple calls to that tab and get whatever data or manipulate it how you please 
curTab.css("background-color", "#FFF"); 
4

:それはあなたが現在のタブにしたい何かをすることですどれだけ簡単に私はあなたが表示されます、次のコードで

eq()を使用してjQueryオブジェクトを取得できます。

あなたがここでは例を参照することができます:jQueryの1.9を選択した後http://jsfiddle.net/svierkant/hpU3T/1/

0
var curTab = $jQuery('#tabs .ui-tabs-panel:not(.ui-tabs-hide)').attr('id'); 
2

はそう

var active = $("#jtabs").tabs("option", "active");

12

ジョナサンサンプソンの答えはもう動作しません使用

を推奨されていません。試してみてください...

$("#tabs .ui-tabs-panel:visible").attr("id");

jsFiddle:http://jsfiddle.net/tbEq6/

-1
$("#tabs .ui-state-active a").attr("id"); 
0

これは動作します:jQueryのUIの

$('#divName .ui-tabs-panel[aria-hidden="false"]').prop('id'); 
+1

答えにいくつかの説明を追加してください。 –

0

を> = 1.9あなたがui.newPanel.selectorを使用することができます。

$('#tabs').on('tabactivate', function(event, ui) { 
    console.log(ui.newPanel.selector); 
}); 
0

jqueryバージョンが1未満です。9:

<div class="roundedFloatmenu"> 
     <ul id="unid"> 
      <li class="titleHover" id="li_search">Search</li>    
      <li class="titleHover" id="li_notes">Notes</li> 
      <li class="titleHover active" id="li_writeback">Writeback</li>   
      <li class="titleHover" id="li_attorney">Attorney</li> 
     </ul> 
    </div 

そして、あなたが使用してアクティブなタブを見つけることができます。

jQuery('#unid').find('li.active').attr('id') 
関連する問題