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' 
); 
+0

嗯,这是行不通的。无论如何,我相信默认的dataType是html。 – 2010-10-11 21:21:20

自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解析器。

+0

实际上,“xml”变量是一个字符串,而不是XML格式,所以这也不起作用。 – 2010-10-12 16:54:33

+0

上述代码的一部分取自http://www.w3schools.com/xml/xml_parser.asp – Ajaxe 2010-10-15 13:13:47