我得到了一些xml数据,将其解析为dom对象,以便我可以使用jQuery搜索和获取值。
这样的事情:
<field>
<name>Jesus</name>
<group>God</group>
<blah>Hello World</blah>
</field>
在我的js中,我使用each()
遍历字段:
data.find('field').each(function() {
$(this).find("group").text();
}
我可以使用find()
来获取每个字段和内容,但我不想使用find,因为它可能会变得昂贵。我查看了jQuery API,我不认为我有一个函数可以让我做一些像“getElement('name')
”或children('name')
或next('name')
等...
由于可读性和潜在的未来变化,我不想使用$(this)[0].childNodes[0]
之类的索引。
有什么想法吗?
答案 0 :(得分:1)
我会给你一个完全不使用jQuery的答案!怎么样?
您的问题似乎是在搜索XML结构。所以你将它转换为DOM树,但现在你担心遍历树的性能问题。
解决方案很简单:不要将XML转换为HTML,将其转换为JavaScript对象文字,并使用它。它将是最简单和最有效的。有关将XML转换为对象文字的参考:XML to JavaScript Object
现在,您可以自由使用JavaScript提供的所有工具来处理数据,并避免任何jQuery / DOM效率问题。
答案 1 :(得分:0)
function alertit(jqueryObject) { if (jqueryObject.length === 0) return; jqueryObject.each(function() { alert(this.nodeName.toLowerCase()); }); alertit(jqueryObject.children()); } alertit($(xml));
答案 2 :(得分:0)
也试试这个
var xmlData = "<field><name>Jesus</name><group>God</group><blah>Hello World</blah></field>";
$(document).ready(function () {
var data = $.parseXML(xmlData);
$(data).each(function (i, node) {
alert($(node).text());
});
});