Я знаю, что могу получить индекс текущей выбранной вкладки, но могу ли я каким-то образом получить идентификатор (эквивалент ui.panel.id
, если это было вызвано событием табуляции... но это не так) выбранного в данный момент вкладка? Я бы предпочел не использовать индекс, потому что упорядочение вкладок может измениться. Я предпочитаю не использовать разметки стиля, поскольку они могут измениться в будущих выпусках. Есть ли способ для этого? Если нет, могу ли я каким-либо образом использовать индекс для доступа к нему (возможно, даже при первом доступе к объекту панели)? Любые другие идеи?
В настоящий момент выбранный идентификатор вкладки для вкладок jQuery
Ответ 1
Вы можете использовать :visible
псевдоселектор для таргетинга на видимую панель:
$("#tabs .ui-tabs-panel:visible").attr("id");
Стоит отметить, что вы можете извлечь активную вкладку из активировать событие:
$("#tabs").tabs({
activate: function (event, ui) {
console.log(ui.newPanel[0].id);
}
});
Ответ 2
Ответ Джонатана Сампсона больше не работает. Попробуйте...
$("#tabs .ui-tabs-panel:visible").attr("id");
jsFiddle: http://jsfiddle.net/tbEq6/
Ответ 3
Если вы хотите, чтобы id
(или фактически href
) с выбранной вкладки, вы можете использовать eq()
для извлечения объекта jQuery.
Здесь вы можете увидеть пример: http://jsfiddle.net/svierkant/hpU3T/1/
Ответ 4
Как я писал в ответ на этот вопрос, есть несколько способов добиться этого.
В jQuery document, они предлагают сделать следующее, чтобы найти индекс открытой вкладки:
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");
Ответ 5
После того, как выбранный JQuery 1.9 устарел
Поэтому используйте
var active = $( "#jtabs" ).tabs( "option", "active" );
Ответ 6
var curTab = $jQuery('#tabs .ui-tabs-panel:not(.ui-tabs-hide)').attr('id');
Ответ 7
Это работает:
$('#divName .ui-tabs-panel[aria-hidden="false"]').prop('id');
Ответ 8
Для jQuery UI >= 1.9 вы можете использовать ui.newPanel.selector
:
$('#tabs').on('tabactivate', function(event, ui) {
console.log(ui.newPanel.selector);
});
Ответ 9
Для версии 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')
Ответ 10
$("#tabs .ui-state-active a").attr("id");