2012-08-31 27 views
0

任何有關爲什麼這不起作用的想法。我正在使用使用AJAX的CSS-Tricks動態加載頁面的教程。這工作得很好,直到我在一些導致頁面正常加載的頁面上引入了輔助導航。使用hashchange加載不支持輔助導航的動態頁面

這是我正在使用的代碼。我正在使用類來設計不同的導航區域。

$(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'); 

});

網站:http://darynjohnson.com/Medical%20Futures/about.php

回答

0

這些新創建的鏈接沒有綁定到他們的任何事件,因爲u盤delagate功能未改變的對象。具有相同標記的新添加的對象(此處爲「nav」)不會被分層。

用途:

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

此外,我建議你將jQuery升級到最新版本,並與()

+0

謝謝你這麼多替代委託()!這一直在擾亂我的年齡 – jshjohnson

+0

我假設頁面標題不可能改變時頁面之間切換? – jshjohnson

+0

這是可能的。您可以使用pushState方法(History.js插件用於交叉瀏覽器功能)或通過設置'document.title'屬性手動執行它 – Eru