Меню с якорной ссылкой javascript или jquery

Я нашел код 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/

Прошу помощи, как это сделать?

if (this.hash! == "") { должен быть if (this.hash !== "") {
Serving Quarantine period 10.03.2018 10:00

У меня как вы писали, при оклейке были зазоры ...

Andre Kesell 10.03.2018 10:04

удалите это: - window.location.hash = hash; и код будет работать

Serving Quarantine period 10.03.2018 10:05

хорошо, это отлично работает, но могу ли я сделать это так, чтобы мне не приходилось использовать косую черту / в ссылке, чтобы получить ссылку с другой подстраницы и поднять соответствующую позицию привязки?

Andre Kesell 10.03.2018 10:10

я не понял тебя

Serving Quarantine period 10.03.2018 10:11

просто снимите / с анкеров

h1b9b 10.03.2018 10:12

когда я нажимаю ссылку new_page.html, у меня там такое же меню, и когда я нажимаю на якорь, оно не работает без косой черты, поэтому мне пришлось добавить его, но в этом случае имя якоря # anchor1 все еще отображается в адресе бар

Andre Kesell 10.03.2018 10:13

поскольку я удаляю ссылку / на другой странице, я не перехожу на домашнюю страницу одной страницы

Andre Kesell 10.03.2018 10:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
1 276
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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>

Хорошо, все работает отлично, и с этим слэшем, вероятно, так и останется. Дело в том, что после перехода с одной стороны на другую с помощью якорей, будет показан адрес якоря #. Большое спасибо за помощь.

Andre Kesell 10.03.2018 10:33

@AndreKesell рад помочь вам

Serving Quarantine period 10.03.2018 11:05

Другие вопросы по теме