使用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,v){
     rows[i] = jo.filter("*:contains('"+v+"')");
 });

在这个阶段,我必须为“rows”数组中的所有行创建一个UNION并显示它们。我迷失在如何做到这一点。

以上脚本在行动 – http://marceble.com/2010/jqueryfilter/index.html?TB_iframe=true&width=720&height=540

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

解决方法

看看这个 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相关文章