使用jQuery在mulitselect中预选值

时间:2010-02-08 23:05:45

标签: jquery drop-down-menu multi-select filterattribute

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

我有一个dropdownchecklist,可以采用单个值 $( “DDL”)dropdownchecklist()VAL(1193);

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

我已经尝试迭代我的数组来构建一个filter属性来应用如下: $(“。ddl [value * ='1184'] [value * ='9067'] [value * ='14841']”)。attr('selected','selected');

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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'); 

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

答案 1 :(得分:0)

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

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

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