0

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

  • 浏览器 - 铬
  • 我有一系列复选框,其中一个默认选中。
  • 我有一个带有 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') - 它们会产生不同的结果。

非常感谢您的任何建议。

4

2 回答 2

2

使用.prop更改 dom 元素的运行时属性,例如checkedselected

这些属性的值是布尔值,例如 true/false,而不是选中/选中。

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

演示:小提琴

于 2013-04-03T03:24:57.470 回答
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

Aprop()与 不同attr()prop()更改元素的属性,其中 asattr()更改属性(用 html 元素编写的那个)

我强烈建议您在 .prop() 与 .attr()上查看所有答案

于 2013-04-03T03:26:42.563 回答