Pergunta

Eu tenho um conjunto de valores que estão presentes no carregamento da página: eg [1193,1184,2372].

Eu tenho um dropdownchecklist que pode levar um único valor como assim $ ( "Ddl") dropdownchecklist () val (1193);..

Quando eu religar o dropdownchecklist Isso seleciona o valor corretamente. No entanto, eu tentei passar minha matriz contendo vários valores para o método val () e que não selecionar os valores. Eu meio que esperava por isso. Eu não tenho certeza a melhor forma de ir sobre pré-selecção.

Eu tentei iteração minha matriz para construir um atributo filtro para aplicar como o seguinte: $ ( "Ddl [valor * = '1184'] [valor * = '9067'] [valor * = '14841']") attr ( 'selecionado', 'selecionado').;

mas isso não funciona. Eu não quero ter que iterate todas as opções no ddl e configurá-los para selecionados se eles combinam como existem centenas de opções e isso não será bom desempenho sábio, especialmente se há apenas 2 opções a serem preseleted.

Todas as idéias?

Foi útil?

Solução

Criar uma corda dos selecionados para criar a cadeia de seletor jQuery e colocá-lo na .find () função:

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'); 

Também nota, quando se compara uma gota para baixo com um valor, você está olhando para o elemento option na seleção, não o próprio elemento select.

Outras dicas

Eu tenho que trabalhar com este mas a resposta olhares acima como uma boa solução:

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

Não tenho certeza que é susceptível de ser mais rápido, mas minas um pouco de.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top