JQuery在表中搜索多个列

JQuery在表中搜索多个列,jquery,search,filter,Jquery,Search,Filter,我发现了这个JSFIDLE: 其中JQuery用于筛选和搜索表的第一列。我一直在尝试修改它,以便它搜索所有列,而不管表中有多少列 可以这样做吗?或者我必须事先知道列的数量吗 另外,我尽量避免使用数据表,因为我不需要它附带的所有额外功能 数据表可以完全满足要求 检查这里 数据表可以完全满足要求 检查这里 事实证明这并不难。以下是我修改的内容: $("#search").on("keyup", function() { var value = $(this).val(); $("table tr")

我发现了这个JSFIDLE:

其中JQuery用于筛选和搜索表的第一列。我一直在尝试修改它,以便它搜索所有列,而不管表中有多少列

可以这样做吗?或者我必须事先知道列的数量吗


另外,我尽量避免使用数据表,因为我不需要它附带的所有额外功能

数据表可以完全满足要求 检查这里


数据表可以完全满足要求 检查这里


事实证明这并不难。以下是我修改的内容:

$("#search").on("keyup", function() {
var value = $(this).val();
$("table tr").each(function(index) {
    if (index !== 0) {
        $row = $(this);

        $row.find('td').each (function() {
            var id = $(this).text();
            if (id.indexOf(value) !== 0) {
                $row.hide();
            }
            else {
                $row.show();
                return false;
            }
        });  

    }
});
});

事实证明这并不难。以下是我修改的内容:

$("#search").on("keyup", function() {
var value = $(this).val();
$("table tr").each(function(index) {
    if (index !== 0) {
        $row = $(this);

        $row.find('td').each (function() {
            var id = $(this).text();
            if (id.indexOf(value) !== 0) {
                $row.hide();
            }
            else {
                $row.show();
                return false;
            }
        });  

    }
});
});

如果您想检查不需要使用.find(“td:first”)的每一列上的整个行,只需使用plain.text(),我认为如果找不到,indexOf()将返回-1

$("#search").on("keyup", function() {
    var value = $(this).val();

    $("table tr").each(function(index) {
        if (index !== 0) {

            $row = $(this);

            var id = $row.text();

            if (id.indexOf(value) !== -1) {
                $row.show();    
            }
            else {
                $row.hide();    
            }
        }
    });
});

如果您想检查不需要使用.find(“td:first”)的每一列上的整个行,只需使用plain.text(),我认为如果找不到,indexOf()将返回-1

$("#search").on("keyup", function() {
    var value = $(this).val();

    $("table tr").each(function(index) {
        if (index !== 0) {

            $row = $(this);

            var id = $row.text();

            if (id.indexOf(value) !== -1) {
                $row.show();    
            }
            else {
                $row.hide();    
            }
        }
    });
});

使用筛选器查找td的匹配项。然后检查长度以确保存在一个


使用过滤器查找td的匹配项。然后检查长度以确保存在一个


您可以使用数据表,而不是创建新代码……我试图避免使用数据表。我不需要它附带的所有额外功能。您可以使用数据表而不是创建新代码…我正在尝试避免使用数据表。我不需要它附带的所有额外功能。这难道不会导致误报吗?示例使用值446没有匹配的td 446 4是唯一id的最后一个数字,46是随机id的前两个数字你是对的,我错过了!我想还是坚持我的解决方案吧。好吧,你说得对,我没有想过,不管怎样,用.html()代替.text()怎么样?虽然它将包含在变量id中,但它将充当每列的分隔符。这难道不会导致误报吗?示例使用值446没有匹配的td 446 4是唯一id的最后一个数字,46是随机id的前两个数字你是对的,我错过了!我想还是坚持我的解决方案吧。好吧,你是对的,我没有想过,无论如何,使用.html()而不是.text()怎么样?尽管它将包含在变量id中,但它将充当每列的分隔符。