2016-02-22 57 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),該元件被記錄。但是,如果我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

好的我明白你的意思了。但是,它對我來說工作得很好。不知道你在哪裏有問題?

我加了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

相關問題