【发布时间】:2014-06-24 15:28:47
【问题描述】:
我有一个很好的'n'old 双选框,我想知道删除所有选项并包含新选项的最有效方法是什么。这是我目前的方法(也欢迎无 jQuery 的建议):
var citiesSelect = $('#cities'),
cities = ['A bunch', 'Of', 'Cities'], //would come from an external array of AJAX
option;
citiesSelect.find('option').each(function() {
$(this).remove();
});
cities.unshift('---'); //including a blank option
for (i in cities) {
option = document.createElement('option');
option.value = i;
option.innerText = cities[i];
citiesSelect.append(option);
}
编辑:结果
This is the JSPerf that resulted from this question(被埋在答案的 cmets 中)。
【问题讨论】:
-
另外,对 JavaScript 数组使用
for ... in循环也不是一个好主意。 -
你的整个循环体可以简洁地编码为:citiesSelect.append(new Option(cities[i], i));并且您的中间块可以替换为 citySelect[0].options.length=0;
标签: javascript jquery html performance