Я делаю простую навигацию с помощью jQuery, который загружает области содержимого, показывая или скрывая их на странице.Я использую теги привязки, чтобы определить, какую панель показывать.Я также использую функцию «готово» для отображения элемента #hash
при загрузке страницы.Довольно просто:
$(document).ready(function() {
$('#video_form_content > div').hide();
var showTab = window.location.hash || "#basic-info";
$(showTab).show();
}
$('#video_form_tabs li').on('click', function() {
$('#video_form_content > div').hide();
var target = $(this).children('a').attr('href');
$(target).show();
})
Что происходит, однако, это то, что при нажатии элементов страница переходит к вершине цели div
.Я не хочу этот переход, но я хочу сохранить функциональность по умолчанию тега привязки в том смысле, что я хочу, чтобы хеш был добавлен к URL, чтобы обновление открыло ту же вкладку.
Вот чтоЯ пробовал
- Добавление
$(window).scrollTop(0)
к событию click.Я думал, что может, но это событие срабатывает перед фактической навигацией элемента привязки, поэтому он немедленно отменяется. - Добавление
$(window).scrollTop(0)
к $(document).ready()
Однако этот слушатель не срабатывает при нажатии на якорь длята же страница. - Добавление
window.location.hash = target
или window.location.href = target
к событию щелчка.Тем не менее, это все еще вызывает повторную отправку страницы, и она все еще «скачет». - Добавление
return false
в функцию.Это предотвращает добавление хэша к URL-адресу, что крайне желательно.
Это действительно сбивает меня с толку, и любая помощь будет принята с благодарностью.