0

ページの読み込み時に存在する一連の値があります: [1193,1184,2372] など。

$(".ddl").dropdownchecklist().val(1193); のような単一の値を取ることができるドロップダウンチェックリストがあります。

ドロップダウンチェックリストを再バインドすると、値が正しく選択されます。ただし、複数の値を含む配列を val() メソッドに渡そうとしましたが、値が選択されません。私はこれを期待していました。事前選択をどのように行うのが最善かわかりません。

次のように適用するフィルター属性を作成するために、配列を反復してみました: $(".ddl [value*='1184'][value*='9067'][value*='14841']")。 attr('selected','selected');

しかし、これは機能しません。何百ものオプションがあるため、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'); 

optionまた、ドロップダウンを値と比較する場合、select 要素自体ではなく、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 に答える