2011-06-05 145 views
0

我正在使用以下代碼以jQuery動態加載頁面。頁面加載工作正常,但是當您單擊導航鏈接加載新頁面時,舊頁面會在屏幕上閃爍,就像它再次加載前一頁面一樣。點擊「聯繫」導航鏈接,看看我的意思:http://ghostpool.com/wordpress/buzz。這是爲什麼發生?jQuery頁面加載器問題

jQuery的(文件)。就緒(函數(){

var hash = window.location.hash.substr(1); 
var href = jQuery('#nav li a').each(function(){ 
    var href = jQuery(this).attr('href'); 
    if(hash==href.substr(0,href.length-5)){ 
     var toLoad = hash+'.html #content'; 
     jQuery('#content').load(toLoad) 
    }           
}); 

jQuery('#nav li a').click(function(){ 

    var toLoad = jQuery(this).attr('href')+' #content'; 
    jQuery('#content').hide('fast',loadContent); 
    jQuery('#load').remove(); 
    jQuery('#page-wrapper').append('<span id="load">LOADING...</span>'); 
    jQuery('#load').fadeIn('normal'); 
    window.location.hash = jQuery(this).attr('href').substr(0,jQuery(this).attr('href').length-5); 
    function loadContent() { 
     jQuery('#content').load(toLoad,'',showNewContent()) 
    } 
    function showNewContent() { 
     jQuery('#content').show('normal',hideLoader()); 
    } 
    function hideLoader() { 
     jQuery('#load').fadeOut('normal'); 
    } 
    return false; 

}); 

});

回答

0

默認行爲仍在運行。你必須禁用它使用這些方法之一:

jQuery('#nav li a').click(function(e){ 

e.preventDefault(); 

// or 

return false;// at the end of the function 
} 

編輯:

後重新閱讀你的代碼,我在這裏看到不尋常的東西機智的功能:

function loadContent() { 
    jQuery('#content').load(toLoad,'',showNewContent()) 
} 
function showNewContent() { 
    jQuery('#content').show('normal',hideLoader()); 
} 

,而不是傳遞你正在傳遞返回值的回調函數。這裏是應該的

jQuery('#content').load(toLoad,'',showNewContent); 
... 
jQuery('#content').show('normal',hideLoader); 

沒有括號被刪除

+0

我都試過解決方案,但沒有正常工作。我想我沒有正確地將它們插入到代碼中。你告訴我這些代碼可以在我上面發佈的代碼中應用這些更改的代碼是什麼?我應該指出,在函數結束時我已經返回false。 – GhostPool 2011-06-05 09:21:55

+0

@GhostPool,我沒有注意到最後的返回錯誤。無論如何,我發現一個錯誤看到我的編輯。 – Ibu 2011-06-05 09:29:43

+0

解決了這個問題。謝謝! – GhostPool 2011-06-05 09:34:11