字符串上的 jQuery 选择器不适用于 Internet Explorer
Posted
技术标签:
【中文标题】字符串上的 jQuery 选择器不适用于 Internet Explorer【英文标题】:jQuery's selectors on string not working for Internet Explorer 【发布时间】:2011-04-23 22:04:18 【问题描述】:我使用 jQuery 的 $.get()
进行 ajax 调用,将字符串返回给函数。该字符串同时包含 xml 和 html,我必须使用 jQuery 的选择器提取部分 html,例如:
$.get(
url,
function (xml)
$(xml).find('something').whatever();
);
在这种情况下,假设 xml var 是一个字符串(确保在 php 中发送的 headers text/html),Firefox 和 Chrome 一切正常。但是在 IE 中却找不到“something”标签。
为什么这不起作用?
更新:
我试图简化问题:
var test = "<hello><world /></hello>";
alert($(test).find('world').length);
这在每个浏览器上都可以正常工作(显示 1
),但在 Internet Explorer 中却不行,它显示 0
(仅在 IE7 上尝试过)。
如何在不更改 XML 中变量格式的情况下解决此问题?
【问题讨论】:
【参考方案1】:由于它的 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解析器。
【讨论】:
实际上,“xml”变量是一个字符串,不是 XML 格式的,所以这也不起作用。 以上部分代码取自w3schools.com/xml/xml_parser.asp【参考方案2】:尝试将dataType设置为html。
$.get(
url,
function (xml)
$(xml).find('something').whatever();
,
'html'
);
【讨论】:
好吧,这行不通。我相信默认的dataType无论如何都是html。以上是关于字符串上的 jQuery 选择器不适用于 Internet Explorer的主要内容,如果未能解决你的问题,请参考以下文章