Плавный переход к якорю на странице, ошибка при ссылке на другую страницу
Нужна помощь. Для плавного скролинга при нажатии пунктов меню я использую следующий код:
nav.find('a').on('click', function () {
const id = $(this).attr('href');
$('html, body').animate({
scrollTop: $(id).offset().top
}, 1000);
return false;
});
Однако, если якорь отсутствует на странице и ссылка ведет на другую страницу, то я получаю ошибку:
VM516 jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: ../diseases.html#anchor-1-diseases
at Function.se.error (VM516 jquery.min.js:2)
at se.tokenize (VM516 jquery.min.js:2)
at se.select (VM516 jquery.min.js:2)
at Function.se [as find] (VM516 jquery.min.js:2)
at S.fn.init.find (VM516 jquery.min.js:2)
at new S.fn.init (VM516 jquery.min.js:2)
at S (VM516 jquery.min.js:2)
at HTMLAnchorElement.<anonymous> (VM517 script.js:100)
at HTMLAnchorElement.dispatch (VM516 jquery.min.js:2)
at HTMLAnchorElement.v.handle (VM516 jquery.min.js:2)
Подскажите, что нужно исправить в коде? Я, так понимаю, надо использовать не nav.find, а какую-то другую команду?
Ответы (1 шт):
Автор решения: humster_spb
→ Ссылка
Можно тем ссылкам, которые с якорем, задать отдельный класс (например, anchor) и в скрипте писать:
nav.find('.anchor').on('click', function ()
Тогда при клике по ссылкам на другие страницы скрипт срабатывать не будет