2010-02-08 68 views
0

我有一組存在於頁面加載的值: 例如[1193,1184,2372]。用jQuery預選多個值

我有一個dropdownchecklist,它可以採用單個值,例如: $(「。ddl」)。dropdownchecklist()。val(1193);

當我重新綁定dropdownchecklist時,會正確選擇該值。不過,我試着將包含多個值的數組傳遞給val()方法,並且不會選擇這些值。我有點期待這一點。我不確定如何最好地預選。

我試着迭代我的數組來構建一個過濾屬性來應用,如下所示: $(「。ddl [value * ='1184'] [value * ='9067'] [value * ='14841 「]「)ATTR( '選擇', '選擇');

但這不起作用。我不想迭代ddl中的所有選項,並將它們設置爲選中,因爲它們有數百個選項,並且這不會有很好的性能,尤其是如果只有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'); 

還要注意,與值進行比較下拉時,你在select中尋找option元素,而不是select元素本身。

+0

我設法找到一個結果,但給了你答案,因爲你的解決方案也可以工作,你很快就回到了我的身邊。 :) 謝謝。 – lloydphillips 2010-02-08 23:21:15

+0

你打賭。很高興它的工作! – munch 2010-02-08 23:24:53

0

我懂了這個工作,但上面的回答看起來像一個很好的解決方案:

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

不知道這很可能是快,但礦山乾淨了一點。