Pergunta

Eu tenho uma configuração como esta ...

$(document).ready(function(){ 
  var model = { /* some variable names */, Traits[] };
  var traits = // json array pulled from server.

  $('input[type=checkbox]').button(); // jquery ui button control.
});

Agora, no meu HTML, tenho um modelo de jQuery como este.

{{each(i, trait) traits}}
   <input type='checkbox' id='chk${trait.Name}' />
   <label for='chk${trait.Name}'>${trait.Name}</label>
{{/each}}

Agora, quando estou criando coisas usando esse estilo, funciona muito bem. Mas quando vou editar as coisas, quero as 'características' que já foram escolhidas para serem 'verificadas' por padrão. Então eu tentei este código ..

// jquery startup... variable loading, etc.
function evaluateCheckbox(item){
   $("'#chk" + item.Name + "'").attr('checked', true);
}
model.Traits.forEach(evaluateCheckbox);

Isso não apenas não verifica as caixas, mas também cria cada caixa de seleção duas vezes. Eu não entendo por que isso é. Alguém pode me dar uma visão e uma idéia de como corrigi -la?

Foi útil?

Solução

Você tem um conjunto extra de qoutes lá, deve ser apenas:

$('#chk' + item.Name).attr('checked', true);

Você provavelmente deseja atualizar o estado visível do botão da interface do usuário do jQuery depois, assim, assim:

$('#chk' + item.Name).attr('checked', true).button('refresh');

Outras dicas

Quanto à criação das caixas de seleção várias vezes, não posso atestar isso. No entanto, para verificar as caixas, verifique seu código de avaliação de alcance para

$("'#chk" + item.Name + "'").attr('checked', 'checked');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top