Выберите каждого видимого последнего ребенка в jQuery - PullRequest
10 голосов
/ 14 декабря 2011

Я хотел бы получить последние видимые td в каждом tr в таблице.

Это не работает, потому что он пытается выбрать последнего потомка , если , то он виден:

var last_visible_cells = $(table).find("tr td:visible:last-child");

Пока что самый простой метод, о котором я думал, это использовать .each для циклического перебора элементов tr и добавления каждого из последних видимых td s в новый список селекторов.

Есть ли более простой способ? Существует ли что-нибудь подобное?

var last_visible_cells = $(table).find("tr").lastMatching("td:visible");

Ответы [ 4 ]

20 голосов
/ 14 декабря 2011

Вы можете сделать это:

$('table tr').find('td:visible:last').addClass('last-visible');

См. полный пример (совместим с jQuery 1.2+)

2 голосов
/ 14 декабря 2011

, чтобы увидеть их до последнего, вы можете сделать что-то вроде

$('table tr').each(function(){
    console.log($(this).find('td:visible:last'))
})
0 голосов
/ 14 декабря 2011

На основании ответа от Mathletics, но с использованием nextUntil(). Это находит каждый видимый тег, который не имеет следующего видимого тега.

$('table tr').children('td').filter(function() { 
  return $(this).is(':visible') && $(this).nextUntil(':visible').length === 0; 
})
0 голосов
/ 14 декабря 2011

Вы хотите захватить все TD и отфильтровать только те, у которых нет видимого элемента рядом с ним.

Dang, который работает, только если нетлюбые невидимые в середине ряда.

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