Как заменить хеш в ссылке

Я хочу добавить хэш URL-адреса в атрибут href навигации:

<ul>
  <li><a href = "/bla">Bla</a></li>
  <li><a href = "/bli">Bli</a></li>
  <li ><a href = "/blu">Blu</a></li>
</ul>

У меня есть такой код:

  $(window).on('hashchange', function (e) {
      console.info(location.hash);
      $("a").attr('href', function(_, href){
        return href + window.location.hash
      });
  });
  if (window.location.hash) {
      $(window).trigger('hashchange')
  }

Теперь, когда я нажимаю на подменю или ввожу URL вручную с хешем, меню обновляется следующим образом:

<ul>
  <li><a href = "/bla#hashVlaue">Bla</a></li>
  <li><a href = "/bli#hashVlaue">Bli</a></li>
  <li ><a href = "/blu#hashVlaue">Blu</a></li>
</ul>

Это работает. Но теперь, если я снова нажму на подменю, хеш будет добавлен, а не заменен. Поскольку при нажатии на подменю страница не перезагружается, ссылки начинают выглядеть так:

<a href = "/blu#hashOne#hashTwo#Three#Four">Blu</a>

Мне просто нужен один хеш, и если он уже есть, его следует заменить. Как мне это сделать?

Не знаю, правильно ли я понял вашу проблему. Но это то, что вам нужно, наверное, return href.split("#")[0] + window.location.hash

Muhammad Usman 05.04.2018 14:12

замените строку return href + window.location.hash в триггере haschange на указанную выше

Muhammad Usman 05.04.2018 14:12

ну вот и все: D, черт возьми. можешь написать это как ответ?

KSPR 05.04.2018 14:14

Прохладный. Рад узнать, что помогло :)

Muhammad Usman 05.04.2018 14:14

проголосуйте за него и сделайте его зеленым: D

Muhammad Usman 05.04.2018 14:17
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
0
5
318
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы всегда добавляете href в свой код. Проверьте строку href + window.location.hash в обратном вызове hashchange. Вот почему он всегда добавляется к предыдущему значению. Вам нужно

return href.split("#")[0] + window.location.hash

Ваше здоровье :)

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