Плавный переход к якорю на странице, ошибка при ссылке на другую страницу

Нужна помощь. Для плавного скролинга при нажатии пунктов меню я использую следующий код:

    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 ()

Тогда при клике по ссылкам на другие страницы скрипт срабатывать не будет

→ Ссылка