ikanyshev
@ikanyshev
Python developer

Как сделать так, что после нажатия на любую ссылку в определенном блоке #menu document.location.hash передавался другой функции?

У меня есть блок меню с ссылками типа
a href="#name"
Необходимо сделать скрипт на js, который будет при нажатии на любую ссылку в блоке div#head div#menu отправлять document.location.hash функции setBlock()
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
document.querySelectorAll('#menu a').forEach(function(link){ // находим все ссылки в меню
  link.addEventListener('click', function(evt){ // добавляем обработчик клика
    setBlock(location.hash) // отправляем 
  })
})

Догадываюсь, что вы хотели что-то другое, но описали вы именно это.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
trushka
@trushka
используйте шо-то типа window.onhashchange=setBlock.
А чтоб не прыгало при клике и смене hash - можно блоки с соответствующими id делать с display:none и либо показывать их по hashcange, либо ставить их перед нужными блоками, а доступ к блоку получать, например, как querySelector(location.hash'+*'). Или можно попробовать поставить перед блоком с нужным id якорь с таким же name и display:none, хотя я не уверен, что прокрутка не будет прыгать к блоку с таким id, так как якорь хоть и первый, но скрытый.. В общем, можно поэксперементировать)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы