it-swarm.com.ru

Нужен текущий выбранный идентификатор вкладки для вкладок jQuery

Я знаю, что могу получить индекс выбранной в данный момент вкладки, но могу ли я как-то получить идентификатор (эквивалент ui.panel.id, если он был вызван событием вкладки ... но это не так) текущей выбранной вкладки? Я бы предпочел не использовать индекс, потому что порядок вкладок может измениться. Я предпочитаю не использовать разметки стилей, поскольку они могут измениться в будущих выпусках. Есть ли способ для этого? Если нет, могу ли я как-то использовать индекс для доступа к нему (возможно, даже сначала для доступа к объекту панели)? Есть еще идеи?

18
ejf

Вы можете использовать :visible псевдо-селектор для нацеливания на видимую панель:

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

Стоит отметить, что вы можете извлечь активную вкладку из события activ :

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

Ответ Джонатана Сэмпсона больше не работает. Пытаться...

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

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

13
Homer

Если вам нужна id (или фактически href) из выбранной вкладки, вы можете использовать eq() для получения объекта jQuery. 

Вы можете увидеть пример здесь: http://jsfiddle.net/svierkant/hpU3T/1/

4
Stephan Vierkant

После JQuery 1.9 выбрано не рекомендуется

Так что используйте

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

3
Manjesh V

Как я написал в ответ на этот вопрос , есть несколько способов добиться этого.

В документах jQuery они предлагают сделать следующее, чтобы найти индекс открытой в данный момент вкладки:

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

Тем не менее, это нецелесообразно, если вам нужно многое сделать с этой вкладкой . Почему они еще не предоставляют более практичное решение для получения фактического элемента, я не уверен, однако, благодаря использованию jQuery есть простое решение, которое вы можете создать сами.

В следующем коде я покажу вам, насколько просто делать с текущей вкладкой все, что вы хотите:

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");
3
SpYk3HH

Для 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')
1
Yoosaf Abdulla

Для jQuery UI> = 1.9 вы можете использовать ui.newPanel.selector:

$('#tabs').on('tabactivate', function(event, ui) {
  console.log(ui.newPanel.selector);
});
0
Kevin Qi
var curTab = $jQuery('#tabs .ui-tabs-panel:not(.ui-tabs-hide)').attr('id');
0
abg

Это работает:

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