jQuery - Почему: first и: last work, но не: nth-child (2) в моем коде? - PullRequest
1 голос
/ 14 апреля 2011

Пожалуйста, рассмотрите следующий фрагмент HTML и соответствующий ему код с jQuery версии 1.3.2:

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

}

Я мог быубедитесь, что все работает, ожидайте, что результат для второго флажка всегда возвращает «ложь».Кажется, мой селектор: nth-child (2) по какой-то причине не работает ...

Заранее большое спасибо, я застрял на некоторое время: (

Ответы [ 2 ]

7 голосов
/ 14 апреля 2011

У вас нет td с более чем одним input, поэтому nth-child(2) ничего не найдет.

6 голосов
/ 14 апреля 2011

nth-child будет искать дочерний элемент элемента td, и у каждого есть только 1 дочерний элемент.Вы должны использовать: eq (2) на тд.Это даст вам индекс соответствующего набора результатов вместо определенного потомка.

$(tr).find('td input:eq(2)').is(':checked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...