2013-08-23 39 views
0

如何删除表中没有特定文本的列中的所有行?
这不起作用:删除表中没有特定文本字符串的所有行(jQuery)

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

UPDATE

贴不为我工作的答案。要么他们删除所有行(我需要检查特定行中的文本而不是第一行)或者他们什么都不做。
这是我第一次尝试的修改以下工作虽然

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

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

特定的列或任一列? –

+0

@JeevanJose:具体专栏(但是这个文本预计不会在任何其他专栏) – Jim

回答

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

我想删除它,如果它不**包含文本 – Jim

+1

哦,只需添加一个'not'然后:http: //jsfiddle.net/22QKM/1/ – Mark

+0

**不**参考http://learnjavascript.co.uk/jq/reference/filtering/not.html – 2013-08-23 11:13:31

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'); 
}); 

测试它,然后用.remove()

DEMO

+0

到目前为止,所有的答案都是** NOT **适用于超过1列的表格。 – Jim

+0

不适用于我 – Jim

+0

@Jim对不起,现在给你解决方案没有测试现在看编辑我已经粘贴了测试代码, –

0

取代.css()出于兴趣,TH据我所知,您发布的代码确实有效。这里是一个的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/

+0

这不会工作超过1 col。因为它似乎如果它没有找到第一个文本中的文本,它会删除该行。对于我来说,此代码删除**所有**行 – Jim

相关问题