2014-07-16 19 views
0

我已創建jsfiddle以幫助查看工作代碼。nav active class不會因爲列表中的圖像而工作

我一直在嘗試實現粘性菜單,該菜單會自動更改活動列表項的顏色。但我現在在中心添加一個圖像作爲列表項之一。

不知何故,它破壞了導航代碼。

我也有一個代碼,這是假設使img去margin-top:-29%;當人滾動超過50像素。由於某種原因,它不會出現在jsfiddle上,但可以工作。

起初我以爲是第二個腳本是衝突它。然後我注意到它在第三個列表項上打破了。

我在做什麼打破它?我不太清楚爲什麼它應該打破代碼的勢頭。有人能指導我嗎?

PS:這可能會或可能不會幫助,但我也得到這個錯誤在控制檯上

Uncaught TypeError: Cannot read property 'top' of undefined 

Uncaught TypeError: Cannot read property 'top' of undefined (index):543 
(anonymous function) (index):543 
p.event.dispatch jquery.min.js:2 
g.handle.h 

線543是從腳本

var divPos = $(theID).offset().top; // get the offset of the div from the top of page 

這個錯誤是可見的,不論這個問題我我正在尋求幫助,但通常不會影響我的用戶體驗。

我對JavaScript的知識很基礎,我無法真正理解我是如何破壞代碼的。請幫忙!

編輯: 我試圖消除圖像,它工作正常here

感謝jtorrescr我已經能夠實現我需要什麼,但現在我面對的固定誤差在控制檯上

Uncaught Error: Syntax error, unrecognized expression: 
Z.error 
bg 
Z.compile 
bm 
h.querySelectorAll.bm 
Z 
p.fn.extend.find 
p.fn.p.init 
p 
(anonymous function) 
p.event.dispatch 
g.handle.h 

//for the js line 
var divPos = $(theID).offset().top; // get the offset of the div from the top of page 
+0

你可以在添加圖像之前添加代碼,以便能夠比較看到你以前的結果嗎? – jtorrescr

+0

感謝您的回覆。我最後添加了它。 –

回答

1

你的問題是,代碼假定你將與<ul>中的所有元素進行交互。通過添加一個額外的元素和最重要的避免與它交互,你需要改變你的代碼。這是你能一起工作的解決方案:代碼http://jsfiddle.net/Ap4QM/25/

只需添加一個,如果排除您要使用的元素:

for (var i=0; i < aArray.length; i++) { 
        if(aArray[i]!='index.php') 
        { 
         var theID = aArray[i]; 
         var divPos = $(theID).offset().top; // get the offset of the div from the top of page 
         var divHeight = $(theID).height(); // get the height of the div in question 

          if (windowPos >= divPos && windowPos < (divPos + divHeight)) { 
           $("a[href='" + theID + "']").addClass("nav-active"); 
          } else { 
           $("a[href='" + theID + "']").removeClass("nav-active"); 
          } 
        } 
       } 

做更加靈活,你可以問的ID,並與合作它而不是索引,所以你可以把它作爲作業

+0

這很有道理。我嘗試使用在我的代碼中編輯出來的編輯,但不知何故仍然忽略了最後一個列表項。然而,你編輯的JSFiddle代碼是完美的。任何想法爲什麼我不斷得到「未捕獲的TypeError:無法讀取未定義的」錯誤的屬性'頂部?一切正常,但它在控制檯上顯示爲100個錯誤。 –

+1

是的,如果您將屏幕縮小(通過調整瀏覽器大小來降低屏幕高度),則可以看到它的效果非常好。這是由於您使用的代碼未檢測到屏幕結束,並且最後一個div不觸發活動事件。我會看看它,看看我能否爲你提供解決方案。 – jtorrescr

+0

我現在使用的計算機沒有在jsfiddle中進行測試的解決方案,但試試這個,如果(windowPos + windowHeight == docHeight)將==替換爲> =並查看是否修復了您的代碼問題 – jtorrescr

相關問題