2016-06-01 2 views
0

У меня есть таблица со следующей структурой:Удалить TR с определенным содержанием

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

Теперь я хочу, чтобы скрыть все tr, где суффикс |2 можно найти в первом td. Таким образом, результат должен быть:

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

Это мой подход:

$('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.

Но это не дает никакого результата.

+0

находкой ищет селектор, и это не селектор, он делает не смотреть на текст. – epascarello

ответ

1

Вы можете использовать селектор :contains.

$('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

Это не так, как .find() работы. Попробуйте вместо этого:

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

Fiddle

+0

Это не соответствует тексту, так как это не является регулярным выражением в матче() – epascarello

+0

О, действительно? https://jsfiddle.net/0839n7sq/ –

0

вы можете использовать .endsWith

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

что на самом деле происходит здесь мы обнаруживаем ли содержание первого столбца каждой строки EndsWith |2

0

Вы должны найти td, который contains "| 2": -

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

вот fiddle

0

Просто используйте следующий код

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

Update:

Чтобы ограничить, чтобы проверить только первый тд,

$('tr td:first-child:contains(|2)').parent('tr').hide(); 
Смежные вопросы