2013-05-05 31 views
0

我正在使用以下腳本將點擊「導航」元素的類更改爲導航欄中的「活動」類。addClass腳本不能在導航元素上工作

$('nav a').click(function(e) { 
     e.preventDefault(); 
     $('nav a').removeClass('active'); 
     $(this).addClass('active'); 
    }); 

,當它在我的jsfiddle真實孤立它的工作原理:

http://jsfiddle.net/shockabout/ECshM/

但它不工作對我的開發站點:

https://dl.dropboxusercontent.com/u/102203801/HTML/index.html

我無法找到是什麼原因導致正在應用'積極'類。我必須添加所有的父類嗎?

+0

檢查控制檯(F12) – Joseph 2013-05-05 19:07:32

+0

您是否在控制檯中看到任何東西?我沒有。 – 2013-05-05 22:13:28

回答

0

我認爲這是不工作怎麼一回事,因爲這裏的錨標記必須做兩個工作組在的Sametime 1.需要添加class to it self 2.需要將用戶帶到一個div,其ID在錨標記href中

您可以試試這段代碼。

它會綁定點擊函數來激活錨點標記,然後通過滾動效果將用戶移動到新的div。

$('nav li a').click(function(e) { 
     e.preventDefault(); 
     $('nav a').removeClass('active'); 
     $(this).addClass('active'); 
     var id=$(this).attr('href'); 
     scrollToId(id); 
    }); 

    function scrollToId(id){ 
       $('html, body').animate({ 
        scrollTop: $(id).offset().top 
        }, 2000);  
    } 
+0

我得檢查一下,謝謝! – 2013-05-05 22:20:46

+0

考慮到這一點,我已經將類更改轉換爲滾動後的平滑滾動腳本。它完美的工作,沒有任何警告或錯誤。再次感謝您的洞察力。我正在從頭開始重建一切,以正確的順序獲得一切,避免衝突。這幫助我將該功能合併到滾動功能中。 – 2013-05-07 21:25:28

0

我剛剛把你的代碼粘貼到主站點的控制檯上,它完美地工作。我在頁面上注意到你有一個裝載器。你確定在導航元素存在之前jQuery代碼沒有運行嗎?

我認爲正在發生的事情是頁面加載,然後DOM技術上已經準備好,所以jQuery綁定click事件,但這些元素不存在,因爲你有其他代碼加載內容,所以jQuery不'實際上綁定任何東西。

嘗試稍微改變它

$("body").on("click", "nav a", function(e){ 
    e.preventDefault(); 
    $('nav a.active').removeClass('active'); 
    $(this).addClass('active'); 
}); 

那麼它應該工作,你

+0

這很好用,甚至不需要包含活動類來應用刪除。我將腳本內嵌在頂級導航欄之前。我很難將該類應用於「聯繫人」導航欄右側邊緣上的傾斜方框末端。我有一個腳本來轉移狀態。可能是干擾,或者我沒有正確選擇它。但隨着我的設計發生了變化,我不再需要最終偏斜的div,所以我要去除它。我會在更多的調整之後刷新html。 – 2013-05-05 21:05:14

+0

我刷新了HTML。它再次完美地工作! – 2013-05-05 22:14:35

+0

好東西:)很高興它爲你工作 – PaReeOhNos 2013-05-05 22:15:20