【问题标题】:jQuery: uncheck/check checkboxes when those have checked attribute on page loadjQuery:在页面加载时取消选中/选中复选框
【发布时间】:2013-07-27 03:44:25
【问题描述】:

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') - 它们会产生不同的结果。

非常感谢您的任何建议。

【问题讨论】:

    标签: jquery


    【解决方案1】:

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

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

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

    演示:Fiddle

    【讨论】:

      【解决方案2】:

      试试这个,

      $('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()

      【讨论】:

        猜你喜欢
        • 2020-08-27
        • 2013-03-22
        • 2019-09-09
        • 2013-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 1970-01-01
        相关资源
        最近更新 更多