检查是否单击了第一个复选框

时间:2015-04-06 10:05:38

标签: javascript jquery checkbox

我有一个复选框列表,如下所示:

<div class="checkbox-list">
     <label><input type="checkbox" value="" /> All items</label><br />
     <label><input type="checkbox" value="1" /> First item</label><br />
     <label><input type="checkbox" value="2" /> Second item</label><br />
     <label><input type="checkbox" value="3" /> Third item</label><br />
     <label><input type="checkbox" value="4" /> Forth Checkbox</label>
</div>

我正在寻找的行为是,如果我选中此div.checkbox-list input[type=checkbox]:first)中的第一个复选框,则选中此复选框后的所有其他复选框。同样,如果我选择除第一个之外的任何一个,则取消选择第一个。

我正在努力研究如何点击第一个?

$(".checkbox-list").on("change", "input[type=checkbox]", function () {
    if ($(this).first()) { // <- not working - how do I know if I clicked the first one?
        $("input[type=checkbox]:checked", ".checkbox-list").not(this).prop("checked", false);
        $(this).prop("checked", true);
    } else {
         // Uncheck first checkbox
    }
});

如果你想玩的话,这是一个小提琴:http://jsfiddle.net/4c7aubqL/1/

2 个答案:

答案 0 :(得分:4)

<强> jsBin demo

$(".checkbox-list").on("change", ":checkbox", function() {
    var $all   = $(".checkbox-list").find(":checkbox");
    var $first = $all.eq(0);
    if ($first.is(":checked")) { 
        $all.not(this).prop("checked", false);
    }
});

答案 1 :(得分:1)

您应该使用单选按钮,而不是复选框。这将完全符合您的要求,您无需付出额外的努力。即使你成功完成了你想要做的事情,用户界面看起来也会出错。