JQuery迭代地扫描嵌套元素

时间:2013-03-12 21:50:15

标签: jquery xml recursion

我正在尝试使用JQuery迭代我已读入并转换为JQuery对象的XML文档中的嵌套节点。在XML格式中,它看起来像:

<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 =“leaf”为每个Node执行一个函数。节点元素可以嵌套在任何级别,最高可达10。

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

    $.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);
    }

1 个答案:

答案 0 :(得分:2)

我不明白为什么这种方法不起作用:

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

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

不需要递归。