2013-03-12 72 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