我得到了变量中有复选框的所有行的id。
var allIds = jQuery("#progAccessSearchResults").jqGrid("getDataIDs");
现在我必须迭代这个并获取仅检查复选框的id。我尝试使用代码来获取复选框ID。
var boxes = $(":checkbox:checked");
但它不起作用。帮帮我..!!我是javascript n jquery的新手。所以请不要介意它是否是一个愚蠢的问题.. !!
答案 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现场演示上述代码。