jquery对话框导致ie锁定

时间:2010-12-08 14:55:23

标签: jquery ajax internet-explorer tablesorter

我正在使用jquery的对话框的内部网站上工作。当我打开对话框时,它会在应用程序从服务器获取数据时使用ajax-loader.gif。

这在FF工作得很好,当然IE正在挣扎。这是代码......

$("#inputDiv5").html('<div style="font-size:100%;height:300px;overflow-y:scroll;"><div id="inputDiv6"><center><img src="/tps/images/ajax-loader.gif" alt="Loading..." /></center></div></div>').dialog({
                title: 'Databanks for ' + $("#PidTitle" + count).text(),
                width: 500,
                modal: true,
                resizable: false,
                open: function() {
                    $.get('content_backend_pub_pid_2_5.ashx', { cmd: 11, pid: x }, function(o) {
                        $("#inputDiv6").html(o);
                        $(".sortablethree th").addClass("sort_header");
                        $(".sortablethree").tablesorter({ widgets: ["zebra"] });
                        $(".sortablethree tr").hover(function() { $(this).addClass("over"); }, function() { $(this).removeClass("over"); });
                    });
                },
                buttons: {
                    'Close': function() { $(this).dialog('close'); }
                }
            });

这可能不是最好的编写代码,因为这是我第一次使用jquery,所以不要取笑!大声笑! ; - )

问题是在IE中动画显示,但不会旋转。 FF在加载数据时旋转。

我做了一些测试。我在get和动画的成功函数中注释掉了代码。因此,当我将表声明为tablesorter时,它看起来似乎正在放慢速度。该表确实返回大约1000行。

我将动画添加到DOM中的单个段落,该动画也停止了。

此外,当我打开对话框时,我打开了任务管理器,CPU使用率出现大幅上升。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

鉴于IE JavaScript引擎众所周知的缓慢/低效,我猜想IE根本无法处理那么多信息。既然你提到你有大约1000行,一个解决方案可能是做一些分页,以减少一次必须处理的信息量。

其他建议: 您可以将.mouseover().mouseout()绑定替换为单个.hover()绑定,如下所示:(请参阅.hover() doc:http://api.jquery.com/hover/

$(".sortablethree tr").hover(function() { $(this).addClass("over"); }, function() { $(this).removeClass("over"); });

这将为你和jQuery节省额外的选择。

此外,您在$.get()末尾错过了分号。我不认为一个是严格要求的,但IE已经知道会扼杀类似的东西。