在查看了其他一些有关此问题的SO之后,我仍然无法弄清楚如何在我的案例中使用它。我有一个包含几行的表和一个上面的输入控件,我需要根据键入的内容进行过滤。每行都有一个删除按钮,我没有在我的jsFiddle中连接。这在我的真实页面上运行良好。
我的主要问题是过滤器本身。它肯定没有正确过滤,我不知道如何考虑删除按钮。当我开始输入过滤器时,我需要做什么,按钮文本(“删除”)将被忽略,行将正确过滤?
这是一个半工作的 jsFiddle 和“半工作”我的意思是,如果你输入字母'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>
感谢这篇文章,我得到了一点开始,但现在只是卡住......:https://stackoverflow.com/a/17075148/738262
工作代码
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();
});
答案 0 :(得分:3)
:contains
区分大小写。当您输入r
时,它找不到Running
,只有Bar
。
同样在for
循环中应该是d++
。