0

我有这样的设置...

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

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

现在,在我的 HTML 中,我有一个像这样的 jQuery 模板。

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

现在,当我使用这种风格创建东西时,它效果很好。但是当我去编辑东西时,我希望已经选择的“特征”默认被“检查”。所以我尝试了这段代码..

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

这不仅不会选中复选框,而且还会创建每个复选框两次。我不明白为什么会这样。谁能给我一些见解,以及如何解决它的想法?

4

2 回答 2

3

你在那里有一组额外的 qoutes,它应该是:

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

之后您可能还想刷新 jQuery UI 按钮的可见状态,如下所示:

$('#chk' + item.Name).attr('checked', true).button('refresh');
于 2010-10-29T15:05:09.053 回答
0

至于多次创建复选框,我无法证明这一点。但是,要选中这些框,请检查您的 evaluateCheckbox 代码以

$("'#chk" + item.Name + "'").attr('checked', 'checked');
于 2010-10-29T15:00:27.550 回答