如何在不使用每个元素的情况下访问checkbox数组的第一个元素?

时间:2015-09-23 06:24:32

标签: javascript jquery

我有一个Jquery事件,它将收集所选复选框的列表,我正在尝试通过尝试逐个访问它们来尝试他们的行为。

$('#sub').click(function () {

    var cb = $("input[type='checkbox']:checked");
    var count = cb.length;

    alert(cb[0].prop('checked'));

    if (count == 0) {
        alert('No subjects selected');
        return false;
    } else {
        return confirm(count + " row(s) selected, proceed?");
    }
});

由于某种原因,访问cb直接赢了。

我需要做这样的事情:

 cb.each(function (i) {
    alert($(this).prop('checked'));
});

但是当我只需要数组的第一个元素时,这将要求我遍历所有这些元素,看看它是否真实。

有没有方法,有人可以告诉我为什么我的第一种方法不起作用?我尝试使用for loop,但没有运气。

3 个答案:

答案 0 :(得分:1)

您可以使用 eq()

alert(cb.eq(0).prop('checked'));

cb[0]将返回dom对象

alert(cb[0].checked);

参考:https://learn.jquery.com/using-jquery-core/faq/how-do-i-pull-a-native-dom-element-from-a-jquery-object/

答案 1 :(得分:1)

您要做的是检查是否至少选择了一个项目,因为cb只检查了项目,您可以检查该项目是否至少包含一个项目,如

$('#sub').click(function () {
    var cb = $("input[type='checkbox']:checked");

    if (!cb.length) {
        alert('No subjects selected');
        return false;
    } else {
        return confirm(count + " row(s) selected, proceed?");
    }

答案 2 :(得分:1)

此:

var cb = $("input[type='checkbox']:checked");

不返回单个元素,它可能会返回许多元素。

这将定位第一个选中的复选框:

var cb = $("input[type='checkbox']:checked:first");

无论状态如何,这都将锁定第一个复选框:

var cb = $("input[type='checkbox']:first");