去除选择选项中的IE6
-
10-07-2019 - |
题
我试图重新填充一个下拉菜单。我在做一个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附加它们)。
不隶属于 StackOverflow