我有一个JSFiddle:http://jsfiddle.net/dPAAG/
我可以循环检查复选框的行......
$('#ordertable').find('input[type="checkbox"]:checked').each(function () {
//this is the current checkbox
var row = $(this);
// this is null
var stuff = row.find('.productVal').val();
alert('this is a checked checkbox');
});
但我似乎无法获得同一行中第一个文本框的值。我试图通过使用类名来访问它,但它似乎不起作用。变量总是未定义的。
我错过了一些简单的东西吗?
答案 0 :(得分:1)
row
是对不能具有后代元素的输入的引用。您缺少用于选择输入的最近closest
父项的tr
方法:
var row = $(this).closest('tr');
您还可以使用过滤has
方法:
$('#ordertable tr').has('input[type="checkbox"]:checked').each(function () {
// `this` here refers the matching `tr` element
});
答案 1 :(得分:1)
我已经改变了你的小提琴,代码说明了一切,但如果你不理解它的任何部分,请问我,我非常乐意解释它。
我假设您想要第一列而不是第二列的值,如果您希望拥有第二列,那么您可以轻松编辑代码并在[0]
之后将[1]
更改为.children()
{1}}功能。
$(function () {
$('#go').on('click', function () {
findCheckboxes();
});
});
function findCheckboxes() {
$('#ordertable').find('input[type="checkbox"]:checked').each(function () {
//this is the current checkbox
var row = $(this);
var itemValue = $($(this).parent().siblings()[0]).children().val();
console.log(itemValue);
//var stuff = row.find('.productVal').val();
//alert('this is a checked checkbox');
});
}