我试图重新填充一个下拉菜单。我在做一个AJAX调用来检索myList中。当我有新的名单,我从选择元素中删除所有的选项,并插入新的值(约100选项)。这适用于更高版本的IE和Firefox的伟大;刷新几乎是瞬间。然而,在IE6,这些操作很慢的浏览器了。下拉框几乎变成动画的选项从它删除,而这正好为几秒钟。有没有什么办法,以旧列表比较新的一个,只有删除/添加已更改的项目之外的加快这?

$("#myselect").children.remove();

$.each(myList, function(i, val) {
   $("<option>").attr("value", val.myID)
                .text(val.myText)
                .appendTo("#myselect");
});
有帮助吗?

解决方案

如果你创建一个新元素,并切换出来?

var newSelect = $("<select></select>");
$.each(myList, function(i, val) {
    $("<option>").attr("value", val.myID)
                 .text(val.myText)
                 .appendTo(newSelect);
});
$("#myselect").replaceWith(newSelect);

其他提示

虽然你的代码是好得多,如果它的速度太慢,去直接路由(我已经做到了,在过去,使用jQuery之前,它在所有的浏览器是即时,包括IE6)。 只需通过删除HTML中删除所有来自选择儿童:

$("#myselect").html('');

和修改循环,让您创建的每个选项的HTML,并通过将其插入选择

$('#myselect').html(optionsHTML); 

根据不同的性能,你可以尝试这种解决方案和karim79的解决方案之间的中间地带(即与HTML删除选项(),并使用数组,而不是创建纯HTML附加它们)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top