如何获取表的所有tr元素并使用jquery过滤它们?

时间:2011-06-27 15:40:56

标签: jquery arrays filter rows

我正在尝试抓取表格中的所有表格行,然后根据它们的标题为“hideGroup”的类对其进行过滤。到目前为止这是我的代码,但它只是输出数字。获取表中所有表行的正确方法是什么,然后检查它们是否有一个名为“hideGroup?”的组?

 var newRows = $("#search-results-table").find("tr");

        var filteredRows = newRows.filter(function(n) {
            if (n.className != "hideGroup")
                return n;
        });

6 个答案:

答案 0 :(得分:4)

你的问题不是很清楚。

如果您想选择拥有该课程的所有行

,请使用:not()
$('#search-results-table tr:not(.hideGroup)')

如果您只想使用该类过滤那些:

$('#search-results-table tr.hideGroup');

答案 1 :(得分:1)

$('#search-results-table tr.hideGroup')将返回完整集。

编辑:

如果你想要行而不是hideGroup,尽管明确地说check to see if they have a group called "hideGroup?",这里是选择器:

$('#search-results-table tr').not('.hideGroup')

答案 2 :(得分:1)

要使用“hideGroup”类返回集合所有表行:

$('#search-results-table tr.hideGroup')

过滤的类使用“hideGroup”类:

$('#search-results-table tr:not(.hideGroup)')

答案 3 :(得分:1)

$('#search-results-table tr:not(.hideGroup)')

这将返回没有hideGroup类的所有表行

答案 4 :(得分:0)

它返回数字的原因是因为n是索引(数字),而不是元素。因此n.className始终为undefined,这将使您在该函数中的逻辑始终返回n

您要使用的是使用

选择结果
$('#search-results-table tr.hideGroup')

$('#search-results-table tr:not(.hideGroup)')

答案 5 :(得分:0)

使用jQuery.filter()的函数时,第一个参数是索引,而不是元素。您可以使用this代替:

来解决此问题
var newRows = $("#search-results-table").find("tr");

var filteredRows = newRows.filter(function(n) {
  return !$(this).hasClass('hideGroup');
});

但是,请看一些其他答案。它们提供了更短的解决方案。