Я попытался сделать страницу scrollto конкретного элемента с идентификатором, и это хорошо работает:JQuery scrollTo переменная
var $target = $('#people');
var scrolltop = $target.offset().top - 50;
$('html, body').animate({ scrollTop: scrolltop }, 'slow');
Теперь я пытаюсь получить $ цель из URL с location.hash
, но по какой-то причине это не сработает. Это мой код:
var $target = $(location.hash);
var scrolltop = $target.offset().top - 50;
$('html, body').animate({ scrollTop: scrolltop }, 'slow');
Если я проверить $ целевое значение является правильным, но я получаю эту ошибку: Cannot read property 'top' of undefined
.
Любая идея, почему?
Возможно, вы выполняете код, прежде чем ваша страница будет загружена полностью. –
Hm. Он отлично работает для меня. – Hatchet
__WARNING__: $ (location.hash) - это отраженная уязвимость XSS. функция jQuery создаст элементы html из первого параметра, если она похожа на html. Откройте для этого консоль javascript и введите $ («»). См. Https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) для праймера XSS. –