删除属性后,我无法添加它

时间:2013-05-05 01:14:21

标签: javascript jquery html

我正在尝试选择所有复选框,但是当我取消选择它并再次选择它时,它就不再选择这些框了。虽然它第一次起作用。

这是我的代码:

HTML:

<div id="Everything">
    <input type="checkbox" id="all" />Select All
    <br />
    <br />
    <div id="selectThese">
        <input type="checkbox" id="First" />First
        <br />
        <input type="checkbox" id="Second" />Second
        <br />
    </div>
</div>

JS:

$(function () {
    $("#Everything").on("click", "#all", function () {
        var carStatus = $("#all").is(':checked');
        if (carStatus == true) {
            $("#selectThese input").attr("checked", "checked");
        } else {
            $("#selectThese input").removeAttr("checked");
        }
    });
});

Jsfiddle链接:http://jsfiddle.net/Epsju/1/

3 个答案:

答案 0 :(得分:5)

你需要使用prop(),因为它接受一个布尔来检查和取消选中该元素,你可以直接使用你的变量,或者只是抛弃变量并使用this.checked

$(function () {
    $("#Everything").on("change", "#all", function () {
        $("#selectThese input").prop("checked", this.checked);
    });
});

FIDDLE

答案 1 :(得分:1)

http://jsfiddle.net/Epsju/6/

change使用#car时,使用#all也会使用$(function () { $("#Everything").on("change", "#all", function () { $('#selectThese :checkbox').prop('checked', $(this).is(':checked')); }); });

{{1}}

答案 2 :(得分:1)

试试这个: - Demo

$(function () {
    $("#Everything").on("change", "#all", function () {
        $('#selectThese :checkbox').prop('checked', $(this).is(':checked'));
    });
});

反之亦然

$('#selectThese :checkbox').on('change', function () {

            $('#all').prop('checked', $('#selectThese :checkbox:checked').length == $('#selectThese :checkbox').length)
        });