Основываясь на ответе @ stankovski, более точном способе его выполнения, который будет работать для всех случаев использования (например, когда вкладка загружается через ajax и атрибут href якоря не соответствует хешу), В любом случае id будет соответствовать атрибуту "aria-controls" элемента li. Так, например, если вы пытаетесь активировать вкладку на основе location.hash, для которого задан идентификатор вкладки, то лучше искать «aria-controls», чем «href».
С пользовательским интерфейсом jQuery> = 1,9:
var index = $('#tabs > ul > li[aria-controls="simple-tab-2"]').parent().index();
$("#tabs").tabs("option", "active", index);
В случае установки и проверки хеша URL:
При создании вкладок используйте событие 'activ', чтобы установить для location.hash идентификатор панели:
$('#tabs').tabs({
activate: function(event, ui) {
var scrollTop = $(window).scrollTop(); // save current scroll position
window.location.hash = ui.newPanel.attr('id');
$(window).scrollTop(scrollTop); // keep scroll at current position
}
});
Затем используйте событие hashchange окна, чтобы сравнить location.hash с идентификатором панели (сделайте это с помощью атрибута aria-controls элемента li):
$(window).on('hashchange', function () {
if (!location.hash) {
$('#tabs').tabs('option', 'active', 0);
return;
}
$('#tabs > ul > li').each(function (index, li) {
if ('#' + $(li).attr('aria-controls') == location.hash) {
$('#tabs').tabs('option', 'active', index);
return;
}
});
});
Это будет обрабатывать все случаи, даже когда на вкладках используется ajax. Кроме того, если у вас есть вложенные вкладки, это не так уж сложно обработать, используя немного больше логики.