繁体   English   中英

字符串的jQuery选择器不适用于Internet Explorer

[英]jQuery's selectors on string not working for Internet Explorer

我使用jQuery的$.get()进行ajax调用,该字符串将字符串返回给函数。 此字符串包含xml和html,并且我必须使用jQuery的选择器提取html的一部分,例如:

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    }
);

在那种情况下,假设xml var是一个字符串(确保在php中发送标题文本/ html),那么一切在Firefox和Chrome上都可以正常工作。 但是在IE中,找不到“东西”标签。

为什么不起作用?

更新:

我试图简化问题:

var test = "<hello><world /></hello>";
alert($(test).find('world').length);

这在每个浏览器上都能正常显示(显示1 ),但在Internet Explorer中却不能,它显示0 (仅在IE7上尝试过)。

如何解决此问题而不必更改XML中变量的格式?

由于其XML,请尝试以下操作:

$(xml).contents().find('something').whatever()

这类似于在iframe <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解析器。

尝试将dataType设置为html。

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    },
    'html'
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM