2014-01-30 21 views
0

我有一個動態頁面http://www.intelligen.info/index.html,用於在從左側導航欄中選擇錨點時替換內容。班級'當前'應該被添加並保留在選定的錨點上,但它不起作用。選定時,選定的錨點應該有一條直線穿過它。我該如何做這項工作?類別在動態頁面上單擊時不會保持錨點

這裏是代碼:

$(function() { 

var newHash  = "", 
    $mainContent = $("#main-content"), 
    $pageWrap = $("#page-wrap"), 
    baseHeight = 0, 
    $el; 

$pageWrap.height($pageWrap.height()); 
baseHeight = $pageWrap.height() - $mainContent.height(); 

$("nav").delegate("a", "click", function() { 
    window.location.hash = $(this).attr("href"); 
    return false; 
}); 

$(window).bind('hashchange', function(){ 

    newHash = window.location.hash.substring(1); 

    if (newHash) { 
     $mainContent 
      .find("#guts") 
      .fadeOut(200, function() { 
       $mainContent.hide().load(newHash + " #guts", function() { 
        $mainContent.fadeIn(200, function() { 
         $pageWrap.animate({ 
          height: baseHeight + $mainContent.height() + "px" 
         }); 
        }); 
        $("nav a").removeClass("current"); 
        $("nav a[href="+newHash+"]").addClass("current"); 
       }); 
      }); 
    }; 

}); 

$(window).trigger('hashchange'); 

}); 

回答

0

一個屬性選擇器的值應該被引用,所以改成這樣:

$("nav a[href='"+newHash+"']").addClass("current"); 

應該以後的工作。您可以使用:target pseudo selector實現相同的視覺效果,這可能會更方便。

0

newHash的值包含.,因爲它的值爲page.html.是jQuery選擇器中的特殊字符,因此您有兩個選項。將其轉義或用引號包裝屬性等於選擇器的值。後者是兩者中較容易的。改變這一行:

$("nav a[href="+newHash+"]").addClass("current"); 

到:

$('nav a[href="'+newHash+'"]').addClass("current"); 
0

你想改變的href或添加類的「選擇」(我猜點擊)元素?

$('nav a').click(function() { 
    $('nav a').removeClass('current'); 
    $(this).addClass('current'); 
} 

這有可能是你的hashchange之外,或者你在點擊觸發hashchange

相關問題