Tất cả các câu trả lời khác đều đúng. Câu trả lời này sẽ tính đến thực tế là một người có thể có nhiều ul.nav.nav-pills
hoặc ul.nav.nav-tabs
trên cùng một trang. Trong trường hợp này, các câu trả lời trước sẽ không thành công.
Vẫn sử dụng localStorage
nhưng với một JSON
giá trị được xâu chuỗi. Đây là mã:
$(function() {
var json, tabsState;
$('a[data-toggle="pill"], a[data-toggle="tab"]').on('shown', function(e) {
var href, json, parentId, tabsState;
tabsState = localStorage.getItem("tabs-state");
json = JSON.parse(tabsState || "{}");
parentId = $(e.target).parents("ul.nav.nav-pills, ul.nav.nav-tabs").attr("id");
href = $(e.target).attr('href');
json[parentId] = href;
return localStorage.setItem("tabs-state", JSON.stringify(json));
});
tabsState = localStorage.getItem("tabs-state");
json = JSON.parse(tabsState || "{}");
$.each(json, function(containerId, href) {
return $("#" + containerId + " a[href=" + href + "]").tab('show');
});
$("ul.nav.nav-pills, ul.nav.nav-tabs").each(function() {
var $this = $(this);
if (!json[$this.attr("id")]) {
return $this.find("a[data-toggle=tab]:first, a[data-toggle=pill]:first").tab("show");
}
});
});
Bit này có thể được sử dụng trên toàn bộ ứng dụng trên tất cả các trang và sẽ hoạt động cho cả tab và viên thuốc. Ngoài ra, hãy đảm bảo rằng các tab hoặc viên thuốc không hoạt động theo mặc định , nếu không bạn sẽ thấy hiệu ứng nhấp nháy khi tải trang.
Quan trọng : Đảm bảo rằng cha mẹ ul
có một id. Cảm ơn Alain