Как при переходе на страницу "подскроллить сайт" к блоку с определённым id

есть ссылка вида /cabinet/tasks/set-school-classes?role=research_coordinator_oo#12146 где 12146 это <div id="12146">

нужно при переходе по этой ссылке скролить страницу к этому <div> , беря id именно из url

как написать это на jquery? точнее как его получить в jquery? в общем вот такой есть набросок (нерабочий естественно)

  $('html, body').animate({
       scrollTop: $("здесь ид блока").offset().top  // класс объекта к которому приезжаем
  }, 1200); // Скорость прокрутки

как его дописать?


Ответы (1 шт):

Автор решения: ryzen

Здесь еще нужно прикрутить проверку, есть ли хэш при загрузке url. Но в целом это выглядит вот так.

const hash = window.location.hash // получаем хэш 
const target = hash.substring(1); // удаляем знак #

$('html, body').animate({
  scrollTop: $(target).offset().top
}, 1200);

Пример для продакшн с проверкой на хэш:

$(function() {
  const hash = window.location.hash
  
  if (hash) {
    const target = hash.substring(1);
    
    $('html, body').animate({
      scrollTop: $(target).offset().top
    }, 1200);
  }
});

→ Ссылка