2016-06-01 12 views
0

Ich habe eine Tabelle mit der folgenden Struktur:Entfernen TR mit bestimmtem Inhalt

| abc|1 | def | ghi | 
| erg|1 | asd | dfg | 
| sdf|2 | ghj | erd | 
| tsd|2 | sdf | hgj | 

ich jetzt all tr ausblenden möge, wo das Suffix |2 in den ersten td finden. So sollte das Ergebnis sein:

| abc|1 | def | ghi | 
| erg|1 | asd | dfg | 

Das ist mein Ansatz:

$('table tr').each(function() { 
 
    $(this).find("\\|2").hide(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>sdf</td> 
 
    <td>hfgh</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>3sf</td> 
 
    <td>gdfg</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>sdf</td> 
 
    <td>jfhj</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>sdf</td> 
 
    <td>hfgh</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>3sf</td> 
 
    <td>gdfg</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>sdf</td> 
 
    <td>jfhj</td> 
 
    </tr> 
 
</table>

jsfiddle.

Aber das ergibt kein Ergebnis.

+0

Fund sucht ein Selektor und das ist kein Selektor, tut es nicht auf Text schauen. – epascarello

Antwort

1

Sie können :contains Selektor verwenden.

$('table tr:contains(|2)').hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>sdf</td> 
 
    <td>hfgh</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>3sf</td> 
 
    <td>gdfg</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|1</td> 
 
    <td>sdf</td> 
 
    <td>jfhj</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>sdf</td> 
 
    <td>hfgh</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>3sf</td> 
 
    <td>gdfg</td> 
 
    </tr> 
 
    <tr> 
 
    <td>bla|2</td> 
 
    <td>sdf</td> 
 
    <td>jfhj</td> 
 
    </tr> 
 
</table>

0

, das nicht ist, wie .find() funktioniert. Versuchen Sie stattdessen:

$('table tr').each(function() { 
    if ($(this).children('td').eq(0).text().match("\\|2")) { 
    $(this).hide(); 
    } 
}); 

Fiddle

+0

Das passt nicht zum Text, da das kein regulärer Ausdruck im Spiel ist() – epascarello

+0

Oh wirklich? https://jsfiddle.net/0839n7sq/ –

0

Sie .endsWith

$('table tr').each(function() { 
    var $this = $(this); 
    if ($this.find('td').eq(0).text().endsWith("|2")) { 
     $this.hide(); 
    } 
}); 

tatsächlich geschieht können hier, was wir, ob der Inhalt der ersten Spalte jeder Zeile endsWith |2

0

zu finden sind Sie müssen td finden, die contains "| 2": -

$(this).find('td:contains("|2")').parent('tr').hide(); 

hier ist die fiddle

0

einfach den folgenden Code verwenden

$('tr:contains(|2)').hide(); 

Update:

zu beschränken nur in der ersten td zu überprüfen,

$('tr td:first-child:contains(|2)').parent('tr').hide();