遍历列表并在jquery中检查复选框ID

时间:2013-09-23 08:58:53

标签: javascript jquery checkbox jqgrid

我得到了变量中有复选框的所有行的id。

var allIds = jQuery("#progAccessSearchResults").jqGrid("getDataIDs");

现在我必须迭代这个并获取仅检查复选框的id。我尝试使用代码来获取复选框ID。

var boxes = $(":checkbox:checked");

但它不起作用。帮帮我..!!我是javascript n jquery的新手。所以请不要介意它是否是一个愚蠢的问题.. !!

4 个答案:

答案 0 :(得分:15)

您可以使用.map使用现有选择器查找已选中复选框的所有ID:

<强> HTML:

<input type="checkbox" id="cb1" />
<input type="checkbox" id="cb2" />
<input type="checkbox" id="cb3" checked="checked" />
<input type="checkbox" id="cb4" />
<input type="checkbox" id="cb5" checked="checked" />

<强>使用Javascript:

var checkedIds = $(":checkbox:checked").map(function() {
        return this.id;
    }).get();

返回:[ "cb3", "cb5" ]

Here是上述代码的小提琴。

答案 1 :(得分:4)

尝试使用each

的循环jquery
$("input:checkbox").each(function(){
    var $this = $(this);    
    if($this.is(":checked")){
        console.log($this.attr("id"));
    }
});

答案 2 :(得分:1)

试试这段代码

var selected = new Array();
$('input:checked').each(function() {
    selected.push($(this).attr('id'));
});

您在selected数组中获得所有选中的复选框ID。这是jsfiddle

答案 3 :(得分:1)

您可以使用第一个:nth-child选择器来获取网格中包含复选框的<td>个元素。然后,您可以使用>input:checked选择器来获取所有选中的复选框。在您拥有包含所请求复选框的jQuery对象之后,您可以使用.closest("tr.jqgrow")来获取具有复选框的行。行的ID是您需要的。您可以使用$.map来获取数组中的所有ID。完整的代码将是

$("#getIds").button().click(function () {
    var $checked = $grid.find(">tbody>tr.jqgrow>td:nth-child(" +
                   (iCol + 1) + ")>input:checked"),
        ids = $.map($checked.closest("tr.jqgrow"),
                    function (item) { return item.id; });
    alert("The list of rowids of the rows with checked chechboxs:\n" + ids.join());
});

使用iCol函数可以获得复选框getColumnIndexByName的列的索引

var getColumnIndexByName = function (grid, columnName) {
    var cm = grid.jqGrid("getGridParam", 'colModel'), i, l;
    for (i = 0, l = cm.length; i < l; i += 1) {
        if (cm[i].name === columnName) {
            return i; // return the index
        }
    }
    return -1;
};

我经常在旧答案中使用。

The demo现场演示上述代码。