请使用jQuery 1.3.2版考虑以下html代码段及其相应代码:
<tr>
<td>id</td>
<td><input type='checkbox' /></td>
<td><input type='checkbox' /></td>
<td><input type='checkbox' /></td>
<td><select>
<option value='0'>0</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
</select></td>
</tr>
jQuery函数:
function submitRoutesForm()
{
data = new Array();
$('#routes_table option:selected').each(function()
{
qty = $(this).val();
if( qty != 0)
{
tmp = new Array();
tr = $(this).closest('tr');
tmp['route_id'] = tr.find('td:first').html();
tmp['qty'] = qty;
tmp['isChild'] = $(tr).find('td input:first').is(':checked');
tmp['isInvalid'] = $(tr).find('td input:nth-child(2)').is(':checked');
tmp['isSpecialDiet'] = $(tr).find('td input:last').is(':checked');
data.push(tmp);
console.log(tmp);
}
});
return false;
}
我可以确认一切正常,第二个复选框的结果总是返回“false”。看来我的选择器:nth-child(2)由于某种原因不起作用......
非常感谢,我坚持了一段时间:(
答案 0 :(得分:7)
您没有td
多个input
,因此nth-child(2)
找不到任何内容。
答案 1 :(得分:6)
nth-child将寻找td元素的孩子,每个孩子只有1个孩子。你应该在td上使用:eq(2)。这将为您提供匹配结果集的索引,而不是某个子项。
$(tr).find('td input:eq(2)').is(':checked');