@FVest

Как отменить перемещение к якорю, но оставить хэш в браузере?

Всем привет. Подскажите, как отменить перемещение к якорю, но сохранить хеш в браузере, вот пример кода:

$(document).ready(function() {
    if (location.hash) {
        $("button[data-bs-target='" + location.hash + "']").tab("show");
    }
    $(document.body).on("click", "button[data-bs-toggle='tab']", function(event) {
        location.hash = this.getAttribute("data-bs-target");
    });
});
$(window).on("popstate", function() {
    var anchor = location.hash || $("button[data-bs-toggle='tab']").first().attr("data-bs-target");
    $("button[data-bs-target='" + anchor + "']").tab("show");
});

если добавить "e.preventDefault();", то отключается перемещение к якорю, но и хэш тоже пропадает
$(document.body).on("click", "button[data-bs-toggle='tab']", function(event) {
        e.preventDefault();
        location.hash = this.getAttribute("data-bs-target");
    });
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
А что, если?
Вместо
location.hash = this.getAttribute("data-bs-target");
использовать
History.pushState(null, document.title, this.getAttribute("data-bs-target"));
?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы