2009-09-12 75 views
0

Ahoy everyone,使用jquery加載內容的問題

我嘗試使用this教程將內容加載到div中。我正在使用jquery。 問題是,當我點擊鏈接

<a href="about.html" class="panel">Profil</a> 

它加載about.html作爲一個單獨的頁面。我嘗試了幾個腳本,但由於某種原因,它看起來像

$("#content").load 

根本不起作用! 我確定我的HTML是有效的,因爲我在教程中使用它接近1:1,並且只修改了目標。

繼承人完整的javascript;

$(document).ready(function() { 

    // Check for hash value in URL 
    var hash = window.location.hash.substr(1); 
    var href = $('#nav li a').each(function(){ 
     var href = $(this).attr('href'); 
     if(hash==href.substr(0,href.length-5)){ 
      var toLoad = hash+'.html #content'; 
      $('#container').load(toLoad) 
     } 

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

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

    }); 
}); 

這可能是什麼原因?

+0

在這一點上,你的語法看起來不錯,所以它可能是其他小事情造成的問題。你運行Firebug來幫助調試與服務器的Ajax通信嗎? - http://getfirebug.com/ – 2009-09-12 18:43:36

+0

螢火蟲控制檯不報告任何錯誤(使用默認設置) – ngmir 2009-09-12 19:38:26

+0

它是否適用於FF而不是IE? – Mottie 2009-09-12 21:43:35

回答

3

您需要防止鏈路的默認操作:

$("a.loader").click(function(e){ 
    e.preventDefault(); 
    $("#content").load(/* Your details here */); 
}); 
+0

中的.attr('href').length-5也沒有任何影響,但是由於快速回復 – ngmir 2009-09-12 17:50:53

0

返回FALSE。讓jQuery的處理停止默認動作:

$(".panel").click(function() 
{ 
    $("#content").load(); 

    return false; 
}); 
+0

我添加了完整的JavaScript,正如你所看到的,返回false包含在內 - 謝謝 – ngmir 2009-09-12 17:26:13

0

好吧,這個問題似乎是在

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

,因爲在那裏設置任何警示(「文本」)不顯示。這對你有幫助嗎?

0

哦,我想我看到了問題...

從該教程頁面。 index.html,about.html,portfolio.html,contact.html和term.html都是除#content部分外的重複網頁。那麼您的about.html是否包含<div id="content">,或者它只是您想要加載到內容區域的頁面。如果是後者,那麼我會改變「#內容」到「身體」,從:

var toLoad = $(this).attr('href')+' #content'; 

var toLoad = $(this).attr('href')+' body'; 
+0

好主意,但它也沒有任何影響。 – ngmir 2009-09-13 09:03:35