JQuery UI Dialog很慢
我最近遇到了一些痛苦。 我一直在使用JQuery对话框在Web应用程序中显示一些配置屏幕。 没什么特别的。 但是我有几个边缘情况,这个配置表单将显示一些… 11000选项的下拉列表。 [DODGES ROTTEN TOMATOES]
不用说,它很慢。 JQuery Dialog最多可能需要9秒才能显示(并且init也很慢)。
第一个问题是:有没有办法加速对话框? 从它看起来,它每次打开时都会复制所有内容。 如果有办法避免这种情况,那会有所帮助。
第二个问题:当被要求显示大量数据时,还有其他jQuery对话框表现更好吗?
和往常一样,欢迎其他解决方案。 一些自动完成ajax不会坏,但可能仍然很慢,除非它至少需要几个初始字符。
我遇到了这个问题并找到了解决方案: http : //forum.jquery.com/topic/select-in-dialog-causes-slowness-in-ie8
只需将对话框draggable
和resizable
选项设置为false
。
如果一个选择所有可能的第一个字母只通过AJAX选项从这个字母开始到第二个选择?
管理以提高性能一点点。 我偏离了JQuery UI并创建了一个更轻的版本。 我没有将目标内容复制到对话框中,而是围绕内容构建对话框。
性能方面,对话从大约10秒钟变为2秒。
2秒听起来好多了,但你可能会发现它非常依赖于用户浏览器和系统配置 – 在IE中较慢的系统上它可能会更糟糕…
我会认真考虑使用其他东西而不是庞大的下拉菜单(这肯定不是非常用户友好) – 它听起来像是自动完成搜索框的一个很好的候选者,或者可能是多级级联下拉菜单。
您还可以在页面加载时创建对话框,并且仅在需要时打开它(在选项中设置autoOpen:false)
如果你必须在这样的对话框中做一个下拉菜单,那么我建议在页面加载后将信息加载到隐藏的div ajax样式中,然后在需要时在你使用的任何灯箱/对话框中显示隐藏的div。 这样,当用户正在做其他事情时,这些东西将被加载,并且有希望在它们出现时准备就绪。
将draggable和resizable设置为false工作。
取决于你用来显示数据的html,即对于chrome或firefox来说可能超级慢。
特别是在你展示大桌子的时候。 这些链接可能很有用 – 你甚至可能会花更多的时间。
http://jquery-howto.blogspot.com/2009/02/5-easy-tips-on-how-to-improve-code.html
我刚刚使用带有数百个复选框的选项卡式对话框遇到了这个问题。 我发现这个链接非常有用。 以前用17s打开对话框,但现在已经下降到大约1.3s。 ( 我正在使用可拖动的不可resize的对话框 )
诀窍是在打开对话框之前分离html,然后使用open函数为对话框重新附加内容。
$('#triggerDialogFast').click(function () { var $dialogContainer = $('#dialogContentFast'); var $detachedChildren = $dialogContainer.children().detach(); $dialogContainer.dialog({ width: 425, height: 400, draggable: false, resizable: false, open: function () { $detachedChildren.appendTo($dialogContainer); }, }); });
我不确定,但是如果在您的场景中可以使用html,那么它应该可以通过在open函数中附加html来实现。