我正在使用以下结构的xml节点:
<CF>
<T>
<TX>title</TX>
<em>15:2:</em>
</T>
<KW>
<TX>SOMETHING ELSE</TX>
</KW>
<!-- OTHER TAGS, SOME OF WHICH HAVE A <TX> CHILD -->
</CF>
事情就像我在firefox中所期望的那样或多或少地起作用,但我在IE8中得到了奇怪的行为。例如,下面给出了一个长度为14的jquery对象:
jQuery("T TX", xmlDoc).length
它应该只有一个(“CF”标签只包含一个“T”标签,而后者只包含一个“TX”标签)。
如果我从选择器中删除“T”,则会增加陌生感,如下所示:
jQuery("TX", xmlDoc).length
我得到FEWER,而不是相等或更多的结果(jquery对象的长度为12)。
所以,第一个问题是:如果只有一个TX标签,并且它只有一个“T”标签,为什么jquery会找到14个“TX”标签,它们是“T”的后代?
第二个问题是:如果我简化选择器,删除“T”,为什么我会减少而不是更多结果呢?
我做错了什么,或者我偶然发现了一个错误?
答案 0 :(得分:1)
也许你可以尝试这样的事情:
jQuery('T', mydoc).find('TX').length
看看会发生什么
答案 1 :(得分:0)
“&lt; TX&gt; title&lt; / TX&gt;”中有14个字符。由于我不知道有多少实际TX元素,我不能说第二个查询中的12是否是文档中TX元素的数量。
有点疯狂而且不在墙上......但是长老属性并没有回归你认为它的回归?
答案 2 :(得分:0)
使用jQuery解析IE8中的非html标签似乎存在问题。我偶然发现了this discussion,其中提出的答案是使用Microsoft.XMLDOM从XML构建DOM对象。这是关键部分:
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
我尝试了这个并解决了我在使用IE8构建XML文档时遇到的一些问题($()和$ .find没有返回任何内容,只有$ .filter可以工作)。
更新:您可能会改为查看$ .parseXML()。