0

我有一组页面加载中存在的值:例如 [1193,1184,2372]。

我有一个 dropdownchecklist,它可以采用像这样的单个值 $(".ddl").dropdownchecklist().val(1193);

当我重新绑定下拉列表时,这会正确选择值。但是,我尝试将包含多个值的数组传递给 val() 方法,并且没有选择这些值。我有点预料到这一点。我不确定如何最好地进行预选。

我已经尝试迭代我的数组来构建一个过滤器属性,如下所示:$(".ddl [value*='1184'][value*='9067'][value*='14841']")。 attr('选中','选中');

但这不起作用。我不想迭代 ddl 中的所有选项,如果它们匹配,则将它们设置为选中,因为有数百个选项,这不会有好的性能,特别是如果只有 2 个选项需要预选。

有任何想法吗?

4

2 回答 2

2

创建选定的字符串以创建 jQuery 选择器字符串并将其放入 .find() 函数中:

var str = '';
var arrLength = selectedArray.length;
$.each(selectedArray, function(i){
   str += 'option[value*='+selectedArray[i]+']';
   if((i+1) != arrLength){
     str += ', ';
   }
});

$('.ddl').find("option[value*='1184'], option[value*='9067'], option[value*='14841']")
     .attr('selected','selected'); 

另请注意,在将下拉列表与值进行比较时,您正在查找optionselect 中的元素,而不是 select 元素本身。

于 2010-02-08T23:12:10.630 回答
0

我得到了它,但上面的答案看起来是一个很好的解决方案:

$.each(arr, function(i,s)
{
     $(ddl_id + ' [value*=\'' + s + '\']').attr('selected','selected');
});    

不确定哪个可能更快,但地雷更清洁。

于 2010-02-08T23:20:07.867 回答