2009-11-14 75 views
7

如何循環的所有標籤中的XMLjQuery的 - 遍歷所有的XML標籤

我有一個生成像下一個

<register> 
    <name>peter</name> 
    <age>12</age> 
</register> 
<register> 
    <name>mary</name> 
    <age>20</age> 
</register> 

,所以我收到此XML個XML一個PHP(這工作正常)

$.ajax({success: function(xml) { 

    $(xml).find('register').each (function() 
    { 
    alert($(this).find('name').text()) // works fine, shows peter then mary on the next loop of "each" 



    // But if i dont know the tag names (name,age) for each register ?  

    // Something like 

     $(this).nodes().each .... // 
alert($(this).tagName); // i wanna show "name" & "age", how can i get the tag names inside each register in my xml sample tree? 

    });  

}}); 

回答

3

你會想看看children()函數,等等。有關這些功能的更多信息,請參閱jQuery traversal documentation

+0

感謝您的快速迭代asnwer但仍我不能做到這一點=((和IM悲傷...) 在jQuery的幫助說 var $ kids = $(e.target).children(); 但仍... .. prolly給我一些對象/數組與孩子,但 我如何獲得每個孩子的tagName? 這沒有工作 $(this).children()。each(function(){alert($(this).tagName);}); // did not work this both,shows all methods/att var childs = $(this).children(); (鑰匙)警報(鑰匙); \t – dedoz 2009-11-14 18:12:05

+3

finally .. var $ childs = $(this).children(); var length = $ childs.length; while(length--)alert($ childs [length] .tagName); 非常感謝你 – dedoz 2009-11-14 18:18:09

11

此鏈接提供了一個很好的例子,使用通過xml

xml.find('result').find('permissionDetails').each(function(){ 
    $(this).children().each(function(){ 
     var tagName=this.tagName; 
     var val=$(this).text(); 
     if(val==1){ 
      $('input:checkbox[name='+tagName+']').attr('checked',true); 
     } 
     else if(val==0){ 
      $('input:checkbox[name='+tagName+']').removeAttr('checked'); 
     } 
    }) 
}); 

http://anasthecoder.blogspot.in/2012/02/looping-through-xml-with-jquery.html