2016-06-18 9 views
0

JQuery.load関数を使用してXMLを読み込もうとしていますが、そのビットはうまくいきます。私はXMLをロードしてDOMに入れています。これは私が望むものです。しかし、次に、最上位の子要素を繰り返し、特定のノードを別のコンテナに追加する必要があります。あなたは以下のコードを見るとすべてが明らかになるだろう:JQueryが正しく追加されない

これは私のJSと記憶素子である:

<div id="ProjectLoad" style="display:none"></div> 

     <script type="text/javascript"> 
      $('#ProjectLoad').load('projects.xml'); 


      $('project').each(function(){ 
       debugger; 
       var name = $(this).children('name').first().text(); 
       var desc = $(this).children('desc').first().text(); 
       var created = $(this).children('created').first().text(); 
       var uri = $(this).children('url').first().created(); 

       $('#trapezoidContainer').append('<div id="' + name + '" class="trapezoid-container"></div>'); 

       $('#' + name).append('<div id="sub-' + name + '" class="trapezoid"></div>'); 

       $('#sub-' + name).append('<a href="' + uri + '">' + name + '</a>'); 

       $(this).hover(function(){ 
        $('#title').text(name); 
        $('#description').text(desc); 
       }) 

      }) 
     </script> 

そして、これが私のprojects.xmlです:

<projects> 
    <project> 
     <name>Test</name> 
     <desc>Simple test project</desc> 
     <created>17/11/1998</created> 
     <url>http;//www.gitlab.com/roconnor/test</url> 
    </project> 
</projects> 

私は、デバッガを持っています声明は.each()で、それは打撃されていませんが、​​はの後にが実行されていることを私に作っています。.each()は待ち時間のため...

+2

に完全なオプションを使用する必要があります。いいえ、loadはすぐに実行されますが、データはまだ返されていません。 'load'メソッドの' callback'関数を使うべきです。これは非同期プロセスです。 – undefined

答えて

0

あなたは ".LOAD())(.eachの後に実行されている" 荷重 -

$('#ProjectLoad').load('projects.xml', function() { 
//just after the end of loading 
$('project').each(function(){ 
       debugger; 
//and so on 
}); 

source

関連する問題