代码之家  ›  专栏  ›  技术社区  ›  Alex Angas Colin

为什么jQuery each()不使用Internet Explorer启动?

  •  1
  • Alex Angas Colin  · 技术社区  · 15 年前

    我有个变数 result 使用以下XML:

    <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下启动,但是在Firefox3.6和Chrome7上运行良好。我试图为这个案例找到一个bug报告,但只发现了旧jQuery版本的问题。

    有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Community Mohan Dere    8 年前

    这是由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 ).

        2
  •  2
  •   AlecTMH    14 年前

    我也遇到了同样的问题,我用ajax获取xml数据,直到我在ajax函数中添加了数据类型之后,它们才在IE8中工作:

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

    上面的工作正常,下面的失败了:

    $.get('http://url', {'a': 0, 'b': 1}, function(data) {));
    
        3
  •  0
  •   Alexey Kjetil Ytrehus    15 年前