2013-03-12 76 views
1

我想使用JQuery来遍历XML文档中的嵌套节点,我已阅读并转换为JQuery对象。在XML的形式,它看起来像这样:JQuery扫描嵌套元素iterablely

<Nodes> 
    <Node attrib="tree"> 
    <Node attrib="tree" att2="something"> 
     <Node attrib="leaf" att2="somethingelse"></Node> 
    </Node> 
    <Node attrib="leaf" att2="somethingmore"></Node> 
    </Node> 
<Nodes> 

我真的想为每个节点与attrib =“叶”执行一个函数。节点元素可以嵌套在任何级别,可能高达10个。

我发现使用.each的各种递归方法,但无法让它们迭代。在没有选择特定属性的情况下,我尝试了基于一些很好的例子的这类事情,但是看不到它。 ViewData.nodeTree是上述XML的加载的XML JQquery对象 。

$.each(ViewData.nodeTree, function (key, val) { 
     recursiveFunction(key, val); 
    }); 
    function recursiveFunction(key, val) { 
     actualFunction(key, val); 
     var value = val['Node']; 
     if(value instanceof Object) { 
      $.each(value, function (key, val) { 
       recursiveFunction(key, val); 
      }); 
     } 
    } 
    function actualFunction(key, val) { 
     alert(key + " " + val); 
    } 

回答

2

我不明白为什么这种方法是行不通的:

$(ViewData.nodeTree).find('Node[attrib="leaf"]').each(function() { 
    // do something on the node 
}); 

http://jsfiddle.net/mattball/B25vF/

没有递归必要的。

+0

谢谢 - 看起来很明显,但是大部分时间都是在夜晚度过的。 – user2162948 2013-03-13 08:41:49