2015-05-08 1 views
2

Я пытаюсь осуществить это на моем сайте, чтобы изменения нав стиля при прокрутке в соответствующие разделыSticky Nav - Не удается прочитать свойство «сверху» неопределенной»

http://stanhub.com/sticky-header-change-navigation-active-class-on-page-scroll-with-jquery/

Единственное отличие я. можно видеть в том, что я создаю СЧ, который становится липким после достижения верхней части страницы.

Когда я бросаю в

console.log(refElement.position()) 

Я получаю это

Object {top: 716.984375, left: 50.5} 
Object {top: 1811.796875, left: 50.5} 

Я получаю ошибку

"Uncaught TypeError: Cannot read property 'top' of undefined" on from function. 

На этой линии:

if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 

Вот сценарий

$(document).ready(function() {  

    $(document).on("scroll", onScroll); 

    function onScroll(event){ 
    var scrollPos = $(document).scrollTop(); 
    $('.cn17w1.original a').each(function() { 
     var currLink = $(this); 
     var refElement = $(currLink.attr("href")); 
     if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) { 
      $('.cn17w1.original ul li a').removeClass("active"); 
      currLink.addClass("active"); 
     } 
     else{ 
      currLink.removeClass("active"); 
     } 
    }); 
    } 
}); 

ответ

0

var refElement = $(currLink.attr("href"));

Это будет возвращать пустой набор jQuery, который при вызове функции position() возвращает undefined. Причина: $(currLink.attr("href")) не выбирает элемент DOM, он выбирает произвольный текст, в частности значение атрибута href элемента currLink.

+0

Но этот штекер ищет соответствующий текст в якорях. href = "# home" & id = "home" –

+0

@SethTipton затем дважды проверьте свой HTML. 'refElement.position() === undefined' означает, что' refElement' пуст. – swornabsent