2010-03-18 2 views
1

JavaScript와 관련해서는 특히 엘리트가 아닙니다. 그래서 나는 배우려고 노력하고 있습니다. 그리고이 과정에서 기본적으로 div에서 모든 내용을 제거하고 다른 div에서 다른 div의 내용을 삽입하는 내용 로더를 구현하려고합니다.jQuery - 콘텐츠 로더에 약간의 도움을 줄 수 있습니다.

이 사이트에이 일을 시도했다 : www.matkalenderen.no이 -이 엉덩이 추한 링크를 확인하십시오. 무슨 일이 일어나는지 보자.

는이 사이트에서 예를 촬영했습니다 : http://nettuts.s3.cdn.plus.org/011_jQuerySite/sample/index.html#index

하지만이 예제는 실제로 나는 그것이 않는 생각하는 방식으로 작동 모르겠어요. 코드가 div의 기존 내용을 지우고 다른 div의 내용을 삽입하는 경우이 예의 다른 웹 페이지는 doctype 및 제목 등을 포함하는 이유는 무엇입니까? 당신은 단지 div가 필요하지 않겠습니까? "주위에"다른 모든 것들없이? 어쩌면 내가 어떻게 작동하는지 알지 못한다. 정말로 그것을 포함하는 것처럼 그것이 mosly 히 움직였다라고 생각했다.

$(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와 .load()는이를 지원하기 위해 몇 가지 추가 기능이 있습니다

그러나 이것은 내 코드입니다. 당신의 예에서
You can see it in the docs here (look at `Loading Page Fragments')

여기에서 중요한 부분 : hash+'.html #container' 공간 #container이 JQuery와, 해당 URL을 잡아 id="container"와 요소에 대해보고 해당 요소의 내용의 페이지의 나머지 부분을 폐기 가져 오는 것을 의미하기 전에. 따라서 .load()은 Ajax 로딩 용으로 특별히 디자인 된 것이 아닌 일반적인 방식으로 작동합니다.

귀하의 경우에는 해당 요소를 찾고있는 것이 아니라면 끝에서 #content을 제거하면됩니다. "찾고자하는 내용"을 말하는 것이 아니라 그들이 찾고자하는 요소에 사용했던 ID입니다. 더 명확한 예가 될 수있는 #divToLoad 일 수 있습니다.

+0

원본 소스 또는 약간 변경된 버전을 보셨습니까? 내 버전에서 #content가 없으므로 마지막 부분을 이해합니다. "귀하의 경우에는 #content를 끝에서 제거해야한다고 생각합니다." –

+0

@Kenny - 게시 한 코드에서 여섯 번째 줄에 :'var toLoad = hash + '.html #container';'해당 ID에 대한 내용을 들여다 보지 않으면 그냥'var toLoad = hash + '.html''당신의 클릭 핸들러에서 같은 : var toLoad = $ (this) .attr ('href') + '#container';'var toLoad = $ (this) .attr (' href ');' –

+0

알았어. 그러나 조금 더 가져 가야합니다. 코드는 파일 내의 div에서 내용을 가져옵니다. 좋습니다. 그러나 그것은 콘텐츠가있는 단일 파일을 많이 필요로합니다. 각 파일에 약간의 내용 만있는 경우에도 마찬가지입니다. 모든 내용을 하나의 파일에 담을 수 있습니까? 별도 div에 두는 것만 큼? preferasly js 코드에서 ID를 지정할 필요없이? 그게 어떻게 href를 통해 아마도, 할 수 있는지 모르십니까? –

관련 문제