Подтвердить что ты не робот

Найти первый TD с текстом в TR с JQuery

Я использую JQuery для повторения всех TR в таблице,

но не все строки имеют значения в первой ячейке.

<TR>
  <TD>3</TD>
  <TD>2</TD>
  <TD>1</TD>
</TR>
  <TD></TD>
  <TD>3</TD>
  <TD>2</TD>
<TR>
</TR>
<TR>
  <TD></TD>
  <TD></TD>
  <TD>3</TD>
</TR>

Как я могу настроить таргетинг на первый TD в каждой строке, которая не пуста, а не только на первый ребенок?

Спасибо!

4b9b3361

Ответ 1

Здесь более простое, более элегантное решение:

$('tr').find('td:not(:empty):first').css('background', 'red');​

Fiddle: http://jsfiddle.net/dandv/JRcEf/

Он просто говорит в jQuery, что вы имеете в виду: "Нацельте первый td в каждом tr, который не является пустым".

Ответ 2

Это находит первый непустой дочерний td внутри каждого tr:

$("tr").each(function() {
    var $firstNonEmptyCell;

    $(this).children("td").each(function() {
        var $td = $(this);
        if ($td.text() === "") {
            $firstNonEmptyCell = $td;
            return false; // Breaks `each` loop
        }
    });

    // ...use `$firstNonEmptyCell` here
});

Или, если вам нужна обертка jQuery для всех непустых, это тривиальный прецедент для filter:

$("tr").each(function() {
    var nonBlankCells = $(this).children("td").filter(function() {
        return $(this).text() !== "";
    });

    // Use `nonBlankCells` here
});

Ответ 3

var tds = [];

$('#tableId tr').each(function()
{
  $(this).find('td').each(function()
  {
    if ( $(this).html() != '' )
    {
      tds.push($(this));
      return false;
    }
  });
});

и voila в переменной tds вы получили теги td