我最近遇到了一些痛苦。我一直在使用JQuery对话框在Web应用程序中显示一些配置屏幕。没什么特别的。但是我有几个边缘情况,这个配置表单将显示一些... 11000选项的下拉列表。 [DODGES ROTTEN TOMATOES]
不用说,它很慢。 JQuery Dialog最多可能需要9秒才能显示(并且init也很慢)。
第一个问题是:有没有办法加速对话框?从它看起来,它每次打开时都会复制所有内容。如果有办法避免这种情况,那会有所帮助。
第二个问题:当被要求显示大量数据时,是否还有其他jQuery对话框表现更好?
与往常一样,欢迎其他解决方案。一些自动完成ajax不会坏,但可能仍然很慢,除非它至少需要几个初始字符。
答案 0 :(得分:2)
我遇到了这个问题并在此处找到了解决方案:http://forum.jquery.com/topic/select-in-dialog-causes-slowness-in-ie8
只需将对话框draggable
和resizable
选项设置为false
。
答案 1 :(得分:1)
如果一个选择所有可能的第一个字母只通过AJAX获得从该字母开始到第二个选择的选项?
答案 2 :(得分:1)
答案 3 :(得分:1)
2秒听起来好多了,但你可能会发现它非常依赖于用户浏览器和系统配置 - 在IE中较慢的系统上可能会更糟糕......
我会认真考虑使用别的东西而不是庞大的下拉菜单(这肯定不是非常用户友好) - 它听起来像是自动填充搜索框的一个很好的候选者,或者可能是多级级联的下拉 - 起伏。
您也可以在页面加载时创建对话框,只在需要时打开它(在选项中设置autoOpen:false)
答案 4 :(得分:1)
如果你必须在这样的对话框中做一个下拉菜单,那么我建议在页面加载后将信息加载到隐藏的div ajax样式中,然后在需要时在任何灯箱/对话框中显示该隐藏的div。这样,当用户正在做其他事情时,这些东西将被加载,并且希望它们在它们出现时就已经准备就绪。
答案 5 :(得分:1)
将draggable和resizable设置为false work。
答案 6 :(得分:0)
取决于你用来显示数据的html,即对于chrome或firefox来说可能超级慢。
特别是当您显示大表时。这些链接可能很有用 - 你甚至可能会花更多时间。
http://jquery-howto.blogspot.com/2009/02/5-easy-tips-on-how-to-improve-code.html
答案 7 :(得分:0)
我刚刚使用带有数百个复选框的选项卡式对话框遇到了这个问题。我发现this link非常有帮助。以前用17s打开对话框,但现在已经下降到大约1.3s。 (我正在使用可拖动的不可调整大小的对话框)
诀窍是在打开对话框之前分离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来实现。