Ответ 1
Вы можете сделать это:
$('table tr').find('td:visible:last').addClass('last-visible');
Подробный пример (совместимость с jQuery 1.2+)
Я хотел бы получить последнюю видимую td
в каждом tr
в таблице.
Это не работает, потому что он пытается выбрать последний ребенок, если он виден:
var last_visible_cells = $(table).find("tr td:visible:last-child");
До сих пор простейшим методом, который я думал, является использование .each
для циклического прохождения элементов tr
и добавления каждого из последних видимых td
в новый список селекторов.
Есть ли более простой способ? Есть ли что-нибудь подобное?
var last_visible_cells = $(table).find("tr").lastMatching("td:visible");
Вы можете сделать это:
$('table tr').find('td:visible:last').addClass('last-visible');
Подробный пример (совместимость с jQuery 1.2+)
чтобы каждый раз увидеть их, вы можете сделать что-то вроде
$('table tr').each(function(){
console.log($(this).find('td:visible:last'))
})
Вы хотите захватить все TD и фильтровать только те, у которых нет видимого элемента рядом с ним.
Dang, это работает только в том случае, если в середине строки нет невидимых.
На основе ответа из Mathletics, но используя nextUntil()
. Это находит каждый видимый тег, у которого нет следующего видимого тега.
$('table tr').children('td').filter(function() {
return $(this).is(':visible') && $(this).nextUntil(':visible').length === 0;
})