0

我正在使用以下代码过滤表中的数据:

function searchFilter(ftr,table){
    ftr = '#'+ftr;
    table = '#'+table;
    var $rows = $(table+' tbody tr');
    $(ftr).change(function() {
        var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();

        $rows.show().filter(function() {
        var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
        return !~text.indexOf(val);
        }).hide();
    });

}

但是,如果在其他列中重复出现信息,它也会显示出来。我怎样才能具体说明我希望过滤器在哪一列工作?假设该列的 id 是betaDate. 我在这里想念什么?

4

1 回答 1

2

那么你会得到列的索引

var searchIndex = $("#betaDate").index();

在过滤器行中,您可以使用索引

$(this).find("td").eq(searchIndex).text()...

还有另一种方法[逻辑可能不正确,但基本思想]

var index = 1; //starts at one not zero!
var text = "1";
$("table tbody tr td:nth-child(" + index + ")")
    .filter( function() {
        return $(this).text()!==text; 
     })
     .parent()
         .addClass("hide");

小提琴

于 2013-10-22T21:38:10.077 回答