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 に答える