jquery包含指定的“所有”单词

时间:2014-11-15 05:09:55

标签: jquery

我正在尝试使用jquery包含来实现一些过滤功能。

我有一个包含3个列的表格,其中包含一些单词

<table>
<thead>
<td>col1</td>
<td>col2</td>
<td>col3</td>
</thead>
<tbody>
<tr><td>a</td><td>b</td><td>z</td></tr>
<tr><td>a</td><td>e</td><td>b</td></tr>
<tr><td>o</td><td>f</td><td>b</td></tr>
</tbody>
</table>

我想调用一个函数showme(string)来显示找到字符串的所有行。 字符串可以是2个字

例如,如果我打电话给showme(&#34; a b&#34;),我会得到

<table>
<thead>
<td>col1</td>
<td>col2</td>
<td>col3</td>
</thead>
<tbody>
<tr><td>a</td><td>b</td><td>z</td></tr>
<tr><td>a</td><td>e</td><td>b</td></tr>
</tbody>
</table>

我不会得到

<tr><td>o</td><td>f</td><td>b</td></tr>

因为a不在其中,只有b。

我尝试通过链接使用contains但无法使其工作。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

要选择包含两个字母的行,您可以

$('tr:contains(a):contains(b)')

如果需要

,您甚至可以将更多:contains链接到第一个TR

答案 1 :(得分:1)

如果您正在寻找完全匹配,可以使用filter方法:

function showme(params) {
   params = params.split(' ');
   $('tbody tr').hide().filter(function() {
        return $(this.cells).filter(function() {
            return params.indexOf($.trim(this.textContent)) !== -1;
        }).length === params.length;
   }).show(); 
}

showme('a b');

http://jsfiddle.net/912dmaum/

如果要将多个参数传递给函数而不是空格分隔的字符串,可以使用arguments对象:

function showme() {
    var params = Array.prototype.slice.call(arguments);
    // ... 
}

showme('a', 'b', 'f');