我正在尝试使用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但无法使其工作。
任何帮助都将不胜感激。
答案 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');
如果要将多个参数传递给函数而不是空格分隔的字符串,可以使用arguments
对象:
function showme() {
var params = Array.prototype.slice.call(arguments);
// ...
}
showme('a', 'b', 'f');