Я основываю активный класс для ссылок в навигации по прокрутке.Невозможно прочитать свойство «сверху» неопределенной ссылки href
function onScroll(event){
var scrollPosition = $(document).scrollTop();
$('.sticky-navigation-posts a').each(function() {
var currentLink = $(this);
var refElement = $(currentLink.attr("href"));
console.log(refElement);
if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
$('.sticky-navigation-posts .title-wrapper .post-title a').removeClass("active");
console.log('yes!');
currentLink.addClass("active");
} else {
currentLink.removeClass("active");
console.log('no!');
}
});
}
Когда я console.log(refElement)
элемент регистрируется. Однако, если i console.log(refElement.position().top)
, эта ошибка выбрасывается Cannot read property 'top' of undefined
. Я отлаживаю какое-то время и не могу понять это. Есть идеи? Я также попробовал обернуть refElement
в $()
.
Весь этот код является оберткой в функции $(document).ready()
.
Вы уверены, что это висбреки? 'jQuery не поддерживает получение координат позиции скрытых элементов или учет границ, полей или отступов, установленных на элементе body.' – anolsi
Элементы находятся на странице. Не спрятанный. – Josh
Чтобы быть уверенным, можете ли вы сделать 'console.log'' refElement.is (': visible') ' – anolsi