Internet explorer jQuery';字符串上的s选择器不适用于Internet Explorer
我使用jQuery的Internet explorer jQuery';字符串上的s选择器不适用于Internet Explorer,internet-explorer,jquery,jquery-selectors,Internet Explorer,Jquery,Jquery Selectors,我使用jQuery的$.get()调用ajax,它将字符串返回给函数。这个字符串包含xml和html,我必须使用jQuery的选择器提取html的某些部分,例如: $.get( url, function (xml) { $(xml).find('something').whatever(); } ); 在这种情况下,Firefox和Chrome都可以正常工作,假设XMLvar是一个字符串(当然是用php发送的头文本/html)。但在IE中,它找不到“某
$.get()
调用ajax,它将字符串返回给函数。这个字符串包含xml和html,我必须使用jQuery的选择器提取html的某些部分,例如:
$.get(
url,
function (xml) {
$(xml).find('something').whatever();
}
);
在这种情况下,Firefox和Chrome都可以正常工作,假设XMLvar是一个字符串(当然是用php发送的头文本/html)。但在IE中,它找不到“某物”标签
为什么这样不行
更新:
我试图简化这个问题:
var test = "<hello><world /></hello>";
alert($(test).find('world').length);
var测试=”;
警报($(测试).find('world').length);
这在每个浏览器上都可以正常工作(显示1
),但在Internet Explorer中则不行,它显示0
(仅在IE7上试用)
如何解决此问题而不必更改XML中变量的格式?尝试将数据类型设置为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);
});
$(文档).ready(函数(){
var txt=“”;
if(window.DOMParser){
parser=新的DOMParser();
xmlDoc=parser.parseFromString(txt,“text/xml”);
}
else//internetexplorer
{
xmlDoc=新的ActiveXObject(“Microsoft.XMLDOM”);
xmlDoc.async=“false”;
xmlDoc.loadXML(txt);
}
警报($(xmlDoc.find('world').length);
});
对于从本地字符串变量解析XML字符串,您必须专门为IE创建一个解析器对象。FF或其他可能不需要它
但是对于
$.ajax
来说,如果数据类型
被指定为xml
,那么这个转换是自动完成的,我们不必创建xml解析器。好吧,这不起作用。我相信默认的数据类型是html。实际上,“xml”变量是一个字符串,而不是xml格式的,所以这也不起作用。上面的部分代码取自