我正在使用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使用率出现大幅上升。
有什么想法吗?
答案 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已经知道会扼杀类似的东西。