jquery选择不包含特定文本的所有行

时间:2013-05-22 17:09:01

标签: javascript jquery

我想使用jQuery选择表中没有包含特定文本的td的所有行。

我可以用这一行选择行:

var x = $('td:contains("text"):parent');  //muliple td's in each tr

如何使用:not选择器反转选择?

编辑:我不认为上面的代码行真的很准确。这就是我最初的路线:

var x = $('td:contains("text")).parent();  //muliple td's in each tr

当我试图反转选择时,我得到所有行,因为它们都碰巧包含不包含文本的td。

2 个答案:

答案 0 :(得分:5)

试试这个:

var $x = $('td:not(:contains("text")):parent');

FIDDLE DEMO

答案 1 :(得分:2)

案例1:选择所有包含所有道明文字“我的文字”的TR

我不会过分依赖伪。使用过滤器尝试类似下面的内容(内部伪也会做同样的事情)

$('tr').filter(function () {
   return $(this).find('td').filter(function () {
                return $(this).text().indexOf('myText') == -1;
          }).length;
}); //would return all tr without text 'myText'

DEMO: http://jsfiddle.net/dWuzA/

案例2:选择所有包含任何道明文字“我的文字”的TR

@squint在评论中提出了一个很好的观点

因此,如果您想要选择包含的所有TR在任何TD中没有特定文本,那么您可以反转条件..见下文,

DEMO: http://jsfiddle.net/dWuzA/1/

$(function () {
    $('tr').filter(function () {
        return !$(this).find('td').filter(function () {
            return $(this).text().indexOf('22') != -1;
        }).length;
    }).addClass('highlight');
});