![](/img/trans.png)
[英]Why isn't this working on Internet Explorer? [jQuery, radio, selectors]
[英]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.