Jquery 使用输入筛选表行

Jquery 使用输入筛选表行,jquery,filter,Jquery,Filter,在看了其他一些关于这方面的问题之后,我仍然不知道如何在我的案例中实现这一点。我有一个表,上面有几行和一个输入控件,我需要根据键入的内容进行过滤。每行都有一个删除按钮,我在JSFIDLE中没有连接到该按钮。这在我的真实页面上效果很好 我的主要问题是过滤器本身。它肯定不能正确过滤,我不知道如何考虑删除按钮。当我开始在过滤器中键入时,按钮文本(“删除”)将被忽略,行将正确过滤,我需要做什么 这里是一个半工作的,我所说的“半工作”是指,如果您键入字母“r”,则所有内容都将被过滤,只有一行。大多数情况下,

在看了其他一些关于这方面的问题之后,我仍然不知道如何在我的案例中实现这一点。我有一个表,上面有几行和一个输入控件,我需要根据键入的内容进行过滤。每行都有一个删除按钮,我在JSFIDLE中没有连接到该按钮。这在我的真实页面上效果很好

我的主要问题是过滤器本身。它肯定不能正确过滤,我不知道如何考虑删除按钮。当我开始在过滤器中键入时,按钮文本(“删除”)将被忽略,行将正确过滤,我需要做什么

这里是一个半工作的,我所说的“半工作”是指,如果您键入字母“r”,则所有内容都将被过滤,只有一行。大多数情况下,你键入的每封信都会经过过滤

过滤代码

<script>
$("#searchFilter").keyup(function () {
    var data = this.value.split(" ");
    var tbl = $("#table1").find("tr");
    if (this.value == "") {
        tbl.show();
        return;
    }
    tbl.hide();
    tbl.filter(function (i, v) {
        var t = $(this);
        for (var d = 0; d < data.length; d++) {
            if (t.is(":contains('" + data[d] + "')")) {
                return true;
            }
        }
        return false;
    }).show();
});
</script>

$(“#搜索过滤器”).keyup(函数(){
var数据=此.value.split(“”);
变量tbl=$(“#表1”)。查找(“tr”);
如果(this.value==“”){
tbl.show();
返回;
}
tbl.hide();
tbl.过滤器(功能(i、v){
var t=$(本);
对于(var d=0;d

多亏了这篇文章,我才有了一个小小的开始,但现在却陷入了困境…:



工作代码

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
    };
});

$("#searchFilter").keyup(function () {
    var data = this.value.split(" ");
    var tbl = $("#table1").find("tr");
    if (this.value == "") {
        tbl.show();
        return;
    }
    tbl.hide();
    tbl.filter(function (i, v) {
        var t = $(this);
        for (var d = 0; d < data.length; d++) {
            if (t.is(":Contains('" + data[d] + "')")) {
                return true;
            }
        }
        return false;
    }).show();
});
jQuery.expr[“:”].Contains=jQuery.expr.createPseudo(函数(arg){
返回函数(elem){
返回jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase())>=0;
};
});
$(“#搜索过滤器”).keyup(函数(){
var数据=此.value.split(“”);
变量tbl=$(“#表1”)。查找(“tr”);
如果(this.value==“”){
tbl.show();
返回;
}
tbl.hide();
tbl.过滤器(功能(i、v){
var t=$(本);
对于(var d=0;d
:contains
区分大小写。当您键入
r
时,它不会发现
正在运行
,只会找到


同样在
for
循环中应该有一个
d++

好的,这是非常好的了解。我不知道:contains区分大小写。非常感谢。另外,在我看到的另一篇文章中,它有++d,我只是在我的问题中重新格式化时忘记了更正它,但现在它已经修复了。我查阅了如何使:contains不区分大小写,并找到了一种解决方法(尽管我真的不喜欢它,而且我确信有一种更好的方法,我将继续搜索)。我正在用这个方法更新我的OP。再次感谢你的帮助!