jquery - 使用 Jquery 过滤表行

标签 jquery

我发现一个 Jquery 脚本可以根据输入字段进行表过滤。该脚本基本上采用过滤器,分割每个单词并使用每个单词过滤表行。因此,最后您将得到一个包含输入字段中所有单词的行列表。

http://www.marceble.com/2010/02/simple-jquery-table-row-filter/

var data = this.value.split(" ");

$.each(data, function(i, v){
     jo = jo.filter("*:contains('"+v+"')");
});

现在,我需要的是过滤包含输入字段中每个单词的行。我想过滤输入字段中至少包含一个单词的所有行。

我尝试过的一种方法是将每个过滤列表放入一个数组中......

  var rows = new Array();

 $.each(data, function(i, v){
     rows[i] = jo.filter("*:contains('"+v+"')");
 });

在这个阶段,我必须对“rows”数组中的所有行进行联合并显示它们。我不知道如何准确地做到这一点。

上面的脚本正在运行 - http://marceble.com/2010/jqueryfilter/index.html?TB_iframe=true&width=720&height=540

如果我在过滤器中输入“cat 6”,我想显示三行。

最佳答案

看看这个 jsfiddle .

这个想法是使用循环单词的函数来过滤行。

jo.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 the rows that match.
.show();

编辑:请注意,使用 :contains() 选择器无法实现不区分大小写的过滤,但幸运的是有 text()函数,因此过滤字符串应为大写,并将条件更改为 if ($t.text().toUpperCase().indexOf(data[d]) > -1)。看看这个jsfiddle .

关于jquery - 使用 Jquery 过滤表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17074687/

相关文章:

jquery - 如果选中的复选框为 true,则单击按钮使 div 可见 使用 jquery

javascript - 获取表数据之间有空格的表行文本

javascript - 我应该按什么顺序添加这些 JavaScript 文件引用才能使 jQuery 数据表编辑器正常工作?

Jquery Modal 背景与模态框重叠

javascript - Jasmine jQuery : Check if element is visible

javascript - 使用 jquery 的菜单键盘导航

jQuery - div 在下一个开始淡入之前没有完全淡出

jquery - 在 wordpress post [jQuery] 中设置动态 css 背景图片

php - 如何读取 json 响应

javascript - 当我再次搜索时,JavaScript 中的表中出现重复行