jQuery - 为什么:第一个和:最后一个工作但不是:我的代码中的nth-child(2)?

时间:2011-04-14 13:18:32

标签: javascript jquery jquery-selectors

请使用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)由于某种原因不起作用......

非常感谢,我坚持了一段时间:(

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');