@ tartartartar
Спасибо, что вернулись и опубликовали свое окончательное решение!Я пытался заставить ссылки на вкладки работать правильно для меня.Ваш «смешанный» код работал отлично, за исключением того, что активировалась первая вкладка, если хеша нет, и кнопки «Назад», если хеша нет.Я использую классы .active, чтобы это могло иметь значение.Чтобы сделать первую вкладку активной, если хеш отсутствует, я добавил оператор else
после первого оператора if
:
var prefix = "tab_";
var hash = document.location.hash;
if(hash){
$(".nav-tabs a[href=" + hash.replace(prefix, "") + "]").tab("show");
} else {
$('.nav-tabs a:first').addClass('active');
}
Следующий код работал с использованием кнопки «Назад», пока не было хэша.(index.html
против index.html#tab_blue
):
function locationHashChanged() {
var activeTab = $("[href=" + document.location.hash.replace(prefix,"") + "]");
if (activeTab.length) {
activeTab.tab('show');
} else {
$('.nav-tabs a:first').tab('show');
}
}
window.onhashchange = locationHashChanged;
После настройки alert(activeTab.length);
непосредственно перед оператором if
я заметил, что он вернет «1» для хэша и «4» для нетхэш, поэтому я добавил оператор идентификации ===
, чтобы проверить значение.Я также добавил .removeClass
, чтобы убедиться, что не было двух активных вкладок одновременно:
if (activeTab.length === 1) {
activeTab.tab('show');
} else {
$('.nav-tabs li').removeClass('active');
$('.tab-content ul').removeClass('active');
$('.nav-tabs li:first').addClass('active');
$('.tab-content ul:first').addClass('active');
}
}
window.onhashchange = locationHashChanged;