从没有特定文本字符串的表中删除所有行

时间:2013-08-23 11:04:44

标签: javascript jquery html-table

如何从表中删除列中没有特定文本的所有行?
这不起作用:

$('#mytable').find('tr:not(:has(th))').filter(
    function() {
          return $(this).find('td').text() != $("#some_component").val();
     }).remove();
}  

更新

发布的答案对我不起作用。要么他们删除所有行(我需要检查特定行中的文本而不是第一行 - 或任何行)或者他们什么都不做。
以下是我的第一次尝试的修改

$('#mytable').find('tr:not(:has(th))').filter(
    function() { 

       return ($(this).find('td').text().indexOf($("#some_component").val()) < 0);
    } 
).remove(); 

4 个答案:

答案 0 :(得分:4)

HTML:

<table id="myTable">
    <tr>
        <td>Example One</td>
        <td>Example Two</td>
        <td>Example Three</td>
    </tr>
    <tr>
        <td>Test One</td>
        <td>Test Two</td>
        <td>Test Three</td>
    </tr>
    <tr>
        <td>Trial One</td>
        <td>Trial Two</td>
        <td>Trial Three</td>
    </tr>
</table>

JavaScript jQuery(如果确实包含):

$(document).ready( function() {
    $('#myTable td:contains("Test")').parents("tr").remove();
});

JavaScript jQuery(如果它不包含):

$(document).ready( function() {
    $('#myTable td').not(':contains("Test")').parents("tr").remove();
});

JSFiddle:http://jsfiddle.net/22QKM/

答案 1 :(得分:0)

您可以使用以下代码执行此操作。

$("td:not(contains("+$("#some_component").val()+")"))
.siblings()
.filter(":not(contains("+$("#some_component").val()+"))")
.parent('tr')
.remove();

经过测试的代码

$('tr').filter(function()
{
    return $(this).find('td:contains("'+ $("#some_component").val() +'")').parent().css('background-color','red');
});

测试它,然后将.css()替换为.remove()

DEMO

答案 2 :(得分:0)

出于兴趣,我发布的代码确实有用,据我所知。这是一个jsfiddle:

$(document).ready(function() {

    $("#btn").click(function () {

        console.log($("#some_component").val());
        $('#mytable').find('tr:not(:has(th))').filter(
            function() {
                  return $(this).find('td').text() != $("#some_component").val();
             }).remove();

    })
});

http://jsfiddle.net/EaNEd/

答案 3 :(得分:0)

删除表中没有特定文本字符串的所有行

 function RemoveFromTable(tblID, VALUE){         
    $("#"+tblID).find(":not(:contains('"+VALUE+"'))").hide();
 }

注意:您也可以使用“ remove()”方法代替“ hide()”方法”

按如下所示调用函数:

RemoveFromTable('table ID','value')