не могу понять в чём ошибка Cannot read property 'top' of undefined
// Cache selectors
var lastId,
topMenu = $("#article-nav"),
topMenuHeight = topMenu.outerHeight()+15,
// All list items
menuItems = topMenu.find("a"),
// Anchors corresponding to menu items
scrollItems = menuItems.map(function(){
var item = $($(this).attr("#"));
if (item.length) { return item; }
});
// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e){
var href = $(this).attr("#"),
offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
$('html, body').stop().animate({
scrollTop: offsetTop
}, 300);
e.preventDefault();
});
// Bind to scroll
$(window).scroll(function(){
// Get container scroll position
var fromTop = $(this).scrollTop()+topMenuHeight;
// Get id of current scroll item
var cur = scrollItems.map(function(){
if ($(this).offset().top < fromTop)
return this;
});
// Get the id of the current element
cur = cur[cur.length-1];
var id = cur && cur.length ? cur[0].id : "";
if (lastId !== id) {
lastId = id;
// Set/remove active class
menuItems
.parent().removeClass("active")
.end().filter("[href='#"+id+"']").parent().addClass("active");
}
});
Uncaught TypeError: Cannot read property 'top' of undefined, но этот элемент существует, в чём может быть ошибка ?
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
ну думаю ошибка в том что $(this).offset() - undefined а в документации есть следующее
Note: jQuery does not support getting the offset coordinates of hidden elements or accounting for margins set on the document element.
While it is possible to get the coordinates of elements with visibility:hidden set, display:none is excluded from the rendering tree and thus has a position that is undefined.
смысл: jQuery не поддерживает получение координат у скрытых объектов