【问题标题】:jQuery won't check checkboxesjQuery不会检查复选框
【发布时间】:2013-06-21 05:05:53
【问题描述】:

我需要帮助我在树视图中自动检查复选框。

我有一个树形视图,当我单击复选框时,列表中的所有子项都会自动选中它们的复选框。问题是它不起作用。

treeview.find('input[type=checkbox]').each(function () {
    $j(this).click(function () {
        if ($j(this).is(':checked')) {
            $j(this).siblings('ul').find('input[type=checkbox]').attr('checked', 'checked');
        } else {
            $j(this).siblings('ul').find('input[type=checkbox]').removeAttr('checked');
        }
    });
});

所以代码说明了一切,我找到了所有复选框,并在每个我绑定点击事件。单击该项目时,它会检查是否已选中,然后查找所有复选框并将其属性设置为选中,否则查找所有复选框并删除其选中属性。我的选择器工作正常,所以这不是问题。

当我点击一个复选框时,所有复选框都会被选中,当我取消选中时,它仍然有效。但是在另一次尝试中,它不再起作用了!这很奇怪!最奇怪的是,当我检查代码时,我可以在复选框上看到它有 checked="checked" 但浏览器不会呈现选中状态(实际上这是主要问题)。

【问题讨论】:

  • 试试.prop() 而不是.attr()

标签: jquery checkbox


【解决方案1】:

用途:

$el.prop('checked', true) // to check the box
$el.prop('checked', false) // to uncheck the box

代替:

$el.attr('checked', 'checked') // to check the box
$el.removeAttr('checked') // to uncheck the box

这是因为您需要更改框的选中状态,而不是选中属性。 checked 属性仅用于复选框的初始状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多