2

我想使用 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。

4

2 回答 2

5

尝试这个:

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

小提琴演示

于 2013-05-22T17:13:34.330 回答
3

案例 1:选择所有 TD 中包含文本“我的文本”的所有 TR

我不会过分依赖伪。使用过滤器尝试以下类似的操作,(无论如何,内部伪都会做同样的事情)

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

演示:http: //jsfiddle.net/dWuzA/

案例 2:选择所有 TD 中包含文本“我的文本”的所有 TR

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

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

演示:http: //jsfiddle.net/dWuzA/1/

$(function () {
    $('tr').filter(function () {
        return !$(this).find('td').filter(function () {
            return $(this).text().indexOf('22') != -1;
        }).length;
    }).addClass('highlight');
});
于 2013-05-22T17:12:23.697 回答