jQuery:当页面加载时检查了属性时,取消选中/选中复选框

时间:2013-04-03 03:21:31

标签: jquery

http://jsfiddle.net/dmitryfil/4pYaW/1/

  • 浏览器 - Chrome
  • 我有一系列复选框,默认选中一个。
  • 我有一个带有2个选项的选项(其中一个选项的值链接到复选框)
  • 当我尝试检查复选框时,基于选择(因此应该选择2),只选择了1个复选框,这就是我想弄清楚的,为什么?

HTML:

<input type="checkbox" name="item-a" checked="checked" />
<input type="checkbox" name="item-b" />
<input type="checkbox" name="item-c" />

<hr />

<select multiple>
    <option value="a">a</option>
    <option value="b">b</option>
</select>

JS:

$('input[type=checkbox]:checked').attr('checked', false);
//$('input[type=checkbox]:checked).removeAttr('checked');

$('select option').each(function(i, el){
    var val = $(this).attr('value');
    $('input[name=item-'+val+']').attr('checked', 'checked');
    //$('input[name=item-'+val+']').attr('checked', true);
});

说明:

  • 如果默认情况下未选中复选框,则表示正常。
  • 当我取消选中时:attr('checked',false)和removeAttr('checked') - 那些会产生不同的结果。

非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

使用.prop更改checkedselected等dom元素的运行时属性。

这些属性的值是布尔值,如true / false,而不是checked / selected。

$('input[name=item-'+val+']').prop('checked', true);

演示:Fiddle

答案 1 :(得分:1)

试试这个,

$('select option').each(function(i, el){
    var val = $(this).prop('value');
    $('input[name=item-'+val+']').prop('checked', 'checked');
    //$('input[name=item-'+val+']').attr('checked', true);
});

Demo

prop()attr()不同。 prop()更改元素的属性,其中attr()更改属性(以html元素编写的属性)

我强烈建议你在这里查看所有答案 .prop() vs .attr()