为什么jQuery each()不会使用Internet Explorer触发?

时间:2010-11-09 07:13:03

标签: jquery internet-explorer each

我有一个带有以下XML的变量result

<Properties>
    <Property>
        <Name>Title</Name>
    </Property>
</Properties>

然后我使用jQuery 1.4.3和each()

$('Property', result).each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

出于某种原因,这个代码没有在IE8下启动,但它在Firefox 3.6和Chrome 7上工作正常。我试图找到这个案例的错误报告,但只发现旧版jQuery版本的问题。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

这是由IE中的错误引起的:

if ((properties.length == 0) && (jQuery.browser.msie)) {
    // IE screwing up
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.loadXML(result);
    result = xmlDoc;
    properties = $('Property', result);
}
properties.each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

好消息 - 在IE9中不会发生这种情况。 (感谢this SO answer)。

答案 1 :(得分:1)

在IE中,xml字符串必须是对象,而其他浏览器允许字符串类型。

我有同样的问题,我用ajax获取xml数据,并且每次在IE8中都不起作用,直到我在ajax函数中添加数据类型:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {), 'xml');

上述工作正常,但以下失败:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {));

答案 2 :(得分:0)

为什么不使用jQuery.XSLT插件?它适用于jQuery工作的所有浏览器,我相信