我发现了一个基于输入字段执行表过滤的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。