Chrome和Jquery的奇怪行为

时间:2013-02-13 16:18:25

标签: javascript jquery google-chrome cross-browser

我必须创建一个显示2个表的简单jsp页面。已经有一个生成表的jsp页面,所以我所要做的就是用不同的参数调用页面并将结果加载到不同的div中。

我尝试的第一件事就是调用2个JQuery加载:

$(function() {
    $("#res_05").load("tableGenerator.jsp", 
        {
            "RESOURCE_NAME": "<%= resName1 %>",
        },
        function(responseText, textStatus, XMLHttpRequest) {
            var firstTable = $("#res_05 table table").first();

            $("#res_05").html(firstTable);
            $("<h1> Resource <%= resName1 %> </h1>").insertBefore("#res_05 table");
    });

    $("#res_15").load("tableGenerator.jsp", 
            {
                "RESOURCE_NAME":"<%= resName2 %>",
            },
            function(responseText, textStatus, XMLHttpRequest) {
                var secondTable = $("#res_15 table table").first();

                $("#res_15").html(secondTable);
                $("<h1> Resource <%= resName2 %> </h1>").insertBefore("#res_15 table");
    });
});

这个简单的页面适用于Firefox甚至Internet Eplorer 8,但在Chrome中它的行为方式很奇怪:它只显示第一个表格。

在第一次尝试之后,我在添加更多复杂性之前将负载集中在一个函数中。 所以脚本变成这样:

$(function() {
    loadTable("res_05", "<%= resName1 %>");

    loadTable("res_15", "<%= resName2 %>");
});


function loadTable(divName, resName) {
        $("#" + divName).load("tableGenerator.jsp",
            {
                "RESOURCE_NAME": resName,
            },
            function(responseText, textStatus, XMLHttpRequest) {
                var firstTable = $("#" + divName + " table table").first();

                $("#" + divName).html(firstTable);
                $("<h1> Resource " + resName + "</h1>").insertBefore("#" + divName + " table");
        });
} 

此更改后,该页面适用于所有浏览器,即使使用Chrome。

似乎这可能是由Chrome的错误javascript解释造成的,但使用JQuery这应该是一种罕见的情况。 毕竟它甚至可以在IE 8中运行,但我没想到Chrome会出现这样的行为。

我不是JQuery的专家,所以如果它不是浏览器问题,我想了解在这种情况下会发生什么。

0 个答案:

没有答案