web-dev-qa-db-fra.com

Trouver d'abord TD avec du texte dans un TR avec JQuery

J'utilise JQuery pour parcourir tous les TR dans un tableau,

mais toutes les lignes n'ont pas de valeurs dans la première cellule.

<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>

Comment puis-je cibler le premier TD de chaque ligne qui n'est pas vide et pas seulement le premier enfant?

Merci!

13
BarakChamo

Voici une solution plus simple et plus élégante:

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

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

Cela dit simplement dans jQuery ce que vous voulez dire: "ciblez le premier td dans chaque tr qui est pas vide".

19
Dan Dascalescu

Ceci trouve le premier enfant non vide td dans chaque 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
});

Ou si vous voulez un wrapper jQuery pour tous les non-blancs, c'est un cas d'utilisation trivial pour filter :

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

    // Use `nonBlankCells` here
});
1
T.J. Crowder
var tds = [];

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

et voila dans la variable tds vous avez obtenu vos tags td

0
Kir Ivlev