2009-11-14 76 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