我有一个逗号分隔值列表" 1,2,3,4" 我有一个多选列表,其中包含与这些值匹配的选项,我在列表中循环并单独选择每个选项(见下文)
jQuery.each(selectedVals, function(index, item){
jQuery("option[value='"+item+"']", jQuery("#manage select")).attr('selected', true);
});
多选列表和值可以是数百个,因此在循环和选择时,旧浏览器的性能会很慢。有没有更快的方法来实现这一目标?有些人如何一次性选择它们?
答案 0 :(得分:0)
首先缓存查询过的对象,看看是否确实存在性能问题。你不应该在循环中做jQuery("#manage select")
之类的事情;你应该存储这个值,这样你就不必不断地回到DOM来找到你之前已经找到的元素:
var $manage = jQuery("#manage select");
jQuery.each(selectedVals, function(index, item){
$manage.find("option[value='"+item+"']").prop('selected', true);
});
然而,每个循环仍在查询DOM。您还可以通过在<options>
容器中找到所有 #manage
,然后逐个手动过滤它们来获得巨大的性能提升:
var $options = jQuery("#manage select option");
jQuery.each(selectedVals, function (index, item){
$options.each(function () {
if ($(this).attr('value') == $item) {
$(this).prop('selected', true)
return false;
}
});
});
答案 1 :(得分:0)
通过将值数组传递给.val()而不是将每个选项设置为选中,我能够更快地完成这一任务。
答案 2 :(得分:-1)
使用:.prop('checked', true);
,以便一次检查多个复选框。