我正在尝试使用
获取所有选中复选框的ID$(document).ready(function(){
$("#thechecked").click(function(){
var closestTr = $(':checkbox:checked').closest('tr').attr('id');
var arr = $.map($(closestTr), function(e, i) {
return +e.value;
});
alert(arr.join(','));
});
});
示例http://jsfiddle.net/3HS8P/1/返回一个空数组
为什么返回一个空数组?
答案 0 :(得分:4)
attr('id')
只返回第一个元素的id
,而不是全部。您可以直接映射集合。
$("#thechecked").click(function () {
var arr = $(':checkbox:checked').closest('tr').map(function(i, e) {
return +e.id;
}).get();
alert(arr.join(','));
});
在jQuery对象上执行.map
将返回一个jQuery对象,因此您还需要.get()
来获取实际数组,以便能够.join()
其元素。< / p>
正如@Alnitak在下面的评论中指出的那样,CSS不允许使用以数字开头的样式id(虽然它可能有效,但规范不允许)。我建议使用data-id="1"
代替id="1"
,然后使用$(el).data("id")
访问它。
答案 1 :(得分:1)
$(document).ready(function(){
$("#thechecked").click(function() {
var closestTr = $('input:checkbox:checked').closest('tr');
var arr = closestTr.map(function(i, e) {
return e.id;
}).get();
alert(arr.join(','));
});
});
答案 2 :(得分:0)
您的行结尾.attr('id')
返回一个字符串,而不是一组元素,因此您无法将其与$.map
一起使用。试试这个通用示例,它将返回jQuery对象$el
中每个元素的所有ID:
var ids = $el.map(function(_, el) {
return el.id;
}).get();
在您的情况下,根据原始代码自下而上:
var $el = $(':checked').closest('tr');
或者可选地(并且可能不是非常有效)自上而下工作:
var $el = $('tr').has(':checked');
答案 3 :(得分:0)
请查看http://jsfiddle.net/3HS8P/5/
这将提醒检查复选框的行ID。
$("#thechecked").click(function(){
var all_ids = []
var id = "";
$.each($('input[type=checkbox]'),function(){
var checked = $(this).is(':checked')
if (checked){
id = $(this).closest('tr').attr('id')
all_ids.push(id)
}
});
alert(all_ids)
});