2014-11-15 3 views
0

Я пытаюсь использовать 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 (строку), которая покажет мне все строки, где найдена строка. строка может быть 2 слова

пример, если я называю ShowMe ("AB"), я хотел бы получить

<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> 

, потому что не в этом, только б.

Я попытался использовать содержит, связав его, но не смог заставить его работать.

Любая помощь будет оценена по достоинству.

+0

должен быть легким, '$ ('тр: содержит (а), Tr: содержит (b) ') ' – adeneo

+0

является то, что AND? будет ли возвращать true, только если оба найдены? –

+0

Нет, если он содержит какие-либо, вы хотите только элементы, которые содержат оба? – adeneo

ответ

2

Чтобы выбрать строку, содержащую оба письма, которые вы можете сделать

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

вы можете даже цепь на более :contains к первому TR, если вам нужно

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'); 
Смежные вопросы