Я нашел код jquery с привязкой в ссылке.
jQuery (document) .ready (function () {
jQuery ("a"). on ('click', function (event) {
if (this.hash !== "") {
event.preventDefault ();
var hash = this.hash;
jQuery ('html, body'). animate ({scrollTop: jQuery(hash).offset ().top}, 800, function () {
window.location.hash = hash;
});
}
});
});
Мое меню работает с якорями как с одной страницей, но у меня есть еще одна ссылка, которая ведет на дополнительную подстраницу, с которой после нажатия ссылки с якорем мне пришлось использовать косую черту /, чтобы вернуться на одну страницу с якорными ссылками. Я бы хотел, чтобы в адресной строке страницы вы не видели ссылку привязки только сам адрес главной страницы, а чтобы ссылка была направлена на соответствующую часть страницы с привязкой.
Мое меню:
<ul id = "categories" class = "nav navbar-nav">
<li><a href = "/#anchor1">Anchor 1</a></li>
<li><a href = "/#anchor2">Anchor 2</a></li>
<li><a href = "/#anchor3">Anchor 3</a></li>
<li><a href = "new_page.html">New page</a></li>
</ul>
Адресная строка в браузере:
http://example.com/#anchor1
Я хотел бы, чтобы ссылка переместилась на сайт привязки после нажатия на меню привязки, но скрыла имя привязки в адресе:
http://example.com/
Прошу помощи, как это сделать?
У меня как вы писали, при оклейке были зазоры ...
удалите это: - window.location.hash = hash; и код будет работать
хорошо, это отлично работает, но могу ли я сделать это так, чтобы мне не приходилось использовать косую черту / в ссылке, чтобы получить ссылку с другой подстраницы и поднять соответствующую позицию привязки?
я не понял тебя
просто снимите / с анкеров
когда я нажимаю ссылку new_page.html, у меня там такое же меню, и когда я нажимаю на якорь, оно не работает без косой черты, поэтому мне пришлось добавить его, но в этом случае имя якоря # anchor1 все еще отображается в адресе бар
поскольку я удаляю ссылку / на другой странице, я не перехожу на домашнюю страницу одной страницы



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


1. Вам необходимо удалить эту строку: -
window.location.hash = hash;
Из вашего кода, когда он добавляет хеш-часть к URL-адресу.
Код должен быть: -
<script>
jQuery (document) .ready (function () {
jQuery ("a"). on ('click', function (event) {
if (this.hash !== "") {
event.preventDefault ();
var hash = this.hash;
jQuery('html, body').animate({scrollTop: jQuery(hash).offset ().top}, 800);
}
});
});
</script>
Хорошо, все работает отлично, и с этим слэшем, вероятно, так и останется. Дело в том, что после перехода с одной стороны на другую с помощью якорей, будет показан адрес якоря #. Большое спасибо за помощь.
@AndreKesell рад помочь вам
if (this.hash! == "") {должен бытьif (this.hash !== "") {