两者都在运作......为什么我需要parseXML
?
var x='<a>\
<item k="1" p1="aaa" />\
<item k="2" p1="bbb" />\
</a>';
alert($($.parseXML(x)).find("item[k='1']").attr('p1')); //aaa
alert($(x).find("item[k='1']").attr('p1')); //aaa
答案 0 :(得分:3)
$.parseXML
函数将在IE中使用DOMParser
或类似内容。
因此它将返回一个真正的xml对象,因此它将包含诸如xml版本($.parseXML(xml).xmlVersion
)之类的内容。
如果你有这样的xml:
<?xml version="1.0" encoding="UTF-8" ?>
<ok>
<yes>true</yes>
</ok>
并使用你的第二个例子,你会得到这个:
[
<!--?xml version="1.0" encoding="UTF-8" ?-->
,
<ok>…</ok>
]
因此,如果您现在尝试执行$(xml).find("ok")
,它将找不到任何内容,因为ok是父标记,如果您执行$(xml).first()
,您将收到评论,我认为不会好的。
但如果您使用的是第一个示例,则会将文档作为父标记:
[#document]
这样您就可以获得ok
这样的标记:$($($.parseXML(xml)).find("ok")
没有问题,并且不会有评论作为第一个节点。