1

我正在尝试使用 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" 为每个节点执行一个功能。节点元素可以嵌套在任何级别,最多可能为 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);
    }
4

1 回答 1

2

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

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

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

不需要递归。

于 2013-03-12T21:54:40.913 回答