2011-12-01 61 views
2

我有一個帶有主導航和子導航的錨點組成的html文檔。 我想要的是在滾動文檔的同時將類切換到錨(subnavigation)。JQuery:在滾動時切換錨點上的類

與jQuery我嘗試了以下內容:

$(function() { 

    $(window).scroll(function() { 

    //define position where i want to know the class 
    var elem = document.elementFromPoint(400, 300) // x, y 

    //read the class at position 
    el = $(elem).attr('class'); 

    //get substring of last class in element 
    //last classes are class_1, class_2, class_3, aso. 
    subclass = el.substr(el.length-1); //throws an error "el is not defined" 

    //toggle class 
    $('a.class_'+subclass).toggleClass('additionalClass'); 


}); 

它的工作或多或少。 這裏是我的兩個問題:

  1. 爲什麼它拋出一個錯誤「沒有定義EL」
  2. 結果「閃爍」,因爲有相同類別,例如許多後續元素「class_1」。實際值是否可以只要沒有其他人在我讀班的位置上存儲「1」?

感謝您的幫助。

的Fabian

+0

'elem'是否存在?從jQuery開始:從jQuery 1.6開始,對於尚未設置的屬性,'.attr()'方法返回'undefined'。 – Marnix

+0

而另一個問題可能是:你正在要求'document.elementFromPoint'。這將永遠是一樣的。我想你需要問'window',這取決於你的瀏覽器:http://www.zehnet.de/2010/11/19/document-elementfrompoint-a-jquery-solution/ – Marnix

+0

'elem'存在。 'window.elementFromPoint'不起作用。 當'.attr()'返回'undefined'時,我希望'subclass'不會改變。即最後一個有效值被存儲並返回,直到讀取下一個有效值。 非常感謝。 –

回答

0

jQuery網站報價:

在jQuery 1.6中,.attr()方法返回undefined對於尚未設置的屬性。

確保有class可用屬性。