Выберите каждый видимый последний дочерний элемент в jQuery

Я хотел бы получить последнюю видимую 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");

Ответ 1

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

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

Подробный пример (совместимость с jQuery 1.2+)

Ответ 2

чтобы каждый раз увидеть их, вы можете сделать что-то вроде

$('table tr').each(function(){
    console.log($(this).find('td:visible:last'))
})

Ответ 3

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

Dang, это работает только в том случае, если в середине строки нет невидимых.

Ответ 4

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

$('table tr').children('td').filter(function() { 
  return $(this).is(':visible') && $(this).nextUntil(':visible').length === 0; 
})