jQuery的字符串选择器不适用于Internet Explorer
我使用jQuery的$.get()
进行ajax调用,该函数将字符串返回给函数。此字符串包含XML和HTML,我不得不提取与jQuery的选择了HTML的某些部分,例如:jQuery的字符串选择器不适用于Internet Explorer
$.get(
url,
function (xml) {
$(xml).find('something').whatever();
}
);
在这种情况下,一切都正常工作与Firefox和Chrome,假设XML变种是一个字符串(标题文本/ HTML在PHP发送确定)。但在IE中,它找不到“东西”标签。
为什么不能正常工作?
更新:
我试图简化问题:
var test = "<hello><world /></hello>";
alert($(test).find('world').length);
这是工作就好在每次浏览器(显示1
),但无法在Internet Explorer,它显示0
(只尝试在IE7上)。
如何解决此问题,而不必更改XML中的变量格式?
尝试将dataType设置为html。
$.get(
url,
function (xml) {
$(xml).find('something').whatever();
},
'html'
);
自XML尝试以下操作:
$(xml).contents().find('something').whatever()
类似的iFrame中访问DOM
更新这个东西:
答到弗洛伦的评论:
$(document).ready(function(){
var txt = "<hello><world/></hello>";
if (window.DOMParser) {
parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);
}
alert($(xmlDoc).find('world').length);
});
对于从本地字符串变量解析XML字符串,您必须专门为IE创建解析器对象。 FF或其他人可能不需要。
但是对于$.ajax
如果dataType
被指定为xml
那么这个转换是自动完成的,我们不需要创建XML解析器。
实际上,“xml”变量是一个字符串,而不是XML格式,所以这也不起作用。 – 2010-10-12 16:54:33
上述代码的一部分取自http://www.w3schools.com/xml/xml_parser.asp – Ajaxe 2010-10-15 13:13:47
嗯,这是行不通的。无论如何,我相信默认的dataType是html。 – 2010-10-11 21:21:20