我正在尝试使用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);
}
答案 0 :(得分:2)
我不明白为什么这种方法不起作用:
$(ViewData.nodeTree).find('Node[attrib="leaf"]').each(function () {
// do something on the node
});
http://jsfiddle.net/mattball/B25vF/
不需要递归。