Найти первый 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 в каждой строке, которая не пуста, а не только на первый ребенок?
Спасибо!
Ответы
Ответ 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