2010-03-18 40 views
1

我不是很優秀,當涉及到的JavaScript,尤其是語法。所以我想學習。在這個過程中,我試圖實現一個內容加載器,它基本上從div中刪除所有內容,並從另一個文檔的另一個div中插入內容。jQuery的 - 可以使用一個小的幫助與內容加載器

我試過在這個網站上做到這一點: www.matkalenderen.no - 檢查那裏的屁股醜陋的鏈接。走着瞧吧?

我已經採取了例如從該網站: http://nettuts.s3.cdn.plus.org/011_jQuerySite/sample/index.html#index

但我不知道這個例子的實際工作,我認爲它的方式。我的意思是,如果代碼只是從一個div抹了現有的內容,並從另一個DIV插入內容,爲什麼在這個例子中其他網頁包括文檔類型和標題等等等等?你不是隻需要div,它的內容?沒有所有其他的東西「周圍」?也許我不明白這是如何工作的。認爲它像真的包括真正的工作。

但是,這是我的代碼:

$(document).ready(function() { 

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

    $('#dynloader a').click(function(){ 

      var toLoad = $(this).attr('href')+' #container'; 
      $('#container').hide('fast',loadcontainer); 
      $('#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 loadcontainer() { 
        $('#container').load(toLoad,'',showNewcontainer()) 
      } 
      function showNewcontainer() { 
        $('#container').show('normal',hideLoader()); 
      } 
      function hideLoader() { 
        $('#load').fadeOut('normal'); 
      } 
      return false; 

    }); 

}); 

回答

2

jQuery的​​有一些額外的功能,它支持這一點。
You can see it in the docs here (look at `Loading Page Fragments')

在您的例子,這裏的重要組成部分:hash+'.html #container'的空間#container意味着jQuery將抓住這個URL,尋找元素與id="container"和只獲取該元素的內容的丟棄頁面的其餘部分之前。這讓在一個更通用的方法​​工作,而你取什麼被專門用於僅AJAX加載設計。

在你的情況,我認爲你只需要從末尾移除#content除非你正在尋找該元素。這並不是說「尋找內容」,這只是他們用於尋找元素的ID。它可能是#divToLoad這將是一個更清晰的例子國際海事組織。

+0

你看看原始來源或我稍微改動的版本?不知道我理解最後一部分「在你的情況下,我認爲你只需要從最後刪除#內容」,因爲我的版本中沒有#content。 – 2010-03-18 12:29:32

+0

@Kenny - 在你發佈的代碼中,第6行是:'var toLoad = hash +'。html #container';'如果你不在內部尋找該ID的內容,它應該只是:'var toLoad =散+ 'html''同樣在點擊處理程序:'VAR對負載= $(本).attr( 'HREF')+' 的#container ';'應該是'無功對負載= $(本).attr(' href');' – 2010-03-18 12:42:00

+0

好吧,我明白了。但要更深入一點。代碼就像從文件內的div中獲取內容一樣。那很好。但是,這將需要包含大量單個文件的內容。即使每個文件中只有一點點內容。是否有可能將所有內容放入單個文件中?只把它們放在單獨的div中?最好不必在js代碼中指定ID?不知道如何做到這一點,也許通過href? – 2010-03-18 20:46:36