2013-03-12 2 views
1

Я пытаюсь использовать JQuery для итерации по вложенным узлам в документе XML, который я прочитал и преобразовал в объект JQuery. В XML форме это выглядит примерно так:JQuery сканирование вложенных элементов итеративно

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

ответ

2

Я не понимаю, почему этот подход не будет работать:

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

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

Нет рекурсии необходимо.

+0

Спасибо - выглядит очевидно, глядя на него, но провел большую часть вечера, озадачив его. – user2162948

Смежные вопросы