Выбрать все таблицы с определенным количеством - PullRequest
1 голос
/ 06 сентября 2011

у меня есть стол

<table>
 <tr>
  <td colspan="3"></td>
 </tr>
 <tr> //select this
  <td></td>
  <td></td>
  <td></td>
 </tr>
 <tr> //select this
   <td></td>
   <td></td>
   <td></td>
 </tr>
</table>

, поэтому для приведенной выше таблицы я хочу выбрать все trs, которые содержат 3 tds

как я могу это сделать с помощью jquery?

В основном мне нужно получить количество таких строк.

Ответы [ 3 ]

5 голосов
/ 06 сентября 2011

Вы можете использовать .filter() [документы] :

$('table tr').filter(function(){
    return $(this).children('td').length === 3;
});

Примечание: @ mu ответ более краткий и будет работать лучше в современных браузерах. Я все равно оставлю этот ответ в качестве общей демонстрации для .filter().

2 голосов
/ 06 сентября 2011

Вы можете выбрать третий <td> в каждом <tr> и перейти на уровень выше, чтобы получить родителя:

$('tr td:nth-child(3)').parent();

Использование :nth-child в этом случае безопасно, потому что ваш <tr>У s должно быть только <td> детей.

Например:

h = $('<table><tr colspan="3"><td></td></tr><tr id="x"><td><span>x</span></td><td></td><td></td></tr><tr id="y"><td></td><td></td><td></td></tr></table>');
trs = h.find('tr td:nth-child(3)').parent();
// trs[0] is <tr id="x">
// trs[1] is <tr id="y">

И демонстрация, предоставленная Феликсом Клингом (теперь, когда jsfiddle.net вернулся в действие): http://jsfiddle.net/6kMTE

1 голос
/ 06 сентября 2011

Вы можете использовать:

$('tr:has(td:eq(2))')

, который выбирает любой tr, содержащий td в позиции 3 (js начинается с нуля).

Примечание Ваш HTML недействителен - colspan принадлежит td, а не tr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...