2016-02-22 3 views
0

Я основываю активный класс для ссылок в навигации по прокрутке.Невозможно прочитать свойство «сверху» неопределенной ссылки 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().

+0

Вы уверены, что это висбреки? 'jQuery не поддерживает получение координат позиции скрытых элементов или учет границ, полей или отступов, установленных на элементе body.' – anolsi

+0

Элементы находятся на странице. Не спрятанный. – Josh

+0

Чтобы быть уверенным, можете ли вы сделать 'console.log'' refElement.is (': visible') ' – anolsi

ответ

1

ok Я понял, что вы имеете в виду сейчас. Тем не менее, он отлично работает для меня. Не знаете, в каком месте у вас проблема?

Я добавил console.log(refElement.position().top);, и он правильно записывается на консоль, и даже желаемое поведение работает !? http://jsfiddle.net/thesane/Dxtyu/3133/

+0

Я пробовал это. Этот пример делает это по-другому. http://jsfiddle.net/cse_tushar/Dxtyu/141/ – Josh

+0

Хорошо, я не знаю, где вы получили свой пример, но я не думаю, что метод 'position()' доступен для 'attributes'. Он доступен только для 'elements' или' tags'. Если у вас есть скрипка, покажите мне – Thesane

+0

jsfiddle.net/cse_tushar/Dxtyu/141 – Josh

Смежные вопросы