Поиск текста в таблице с помощью jQuery - PullRequest
2 голосов
/ 19 июня 2009

У меня есть таблица с такими строками:

<tr id="" class="objectRow">
  <td class="bulkSelector"><input id="" type="checkbox" value=""/></td>
  <td class="favorite"></td>
  <td class="name"><a id="" class="" href="">Ut Urna Nisl</a></td>
  <td class="description"><p>Nam feugiat tincidunt massa nec venenatis. Mauris egestas consectetur magna</p></td>
  <td class="modifiedDate"><p>5/20/2009</p></td>
</tr>

Я хочу создать упакованный в jQuery набор всех текстовых элементов, которые я затем смогу отправить в функцию, которая обрезает их, если они не помещаются в свои ячейки.

Я не могу понять, как получить упакованный комплект.

Пробовал это, но это не работает:

var textNodes = $('#resultsTable .objectRow')
.contents()
.filter(function(){ return this.nodeType == 3; })
.filter(function(){return this.nodeValue != null});

1 Ответ

2 голосов
/ 19 июня 2009

Функция jQuery text возвращает объединенное текстовое содержимое элемента, поэтому вам не нужно беспокоиться о nodeTypes и подобных. Таким образом, вы можете просто отфильтровать все элементы, текстовое содержимое которых пустое:

$('tr.objectRow', '#resultsTable').find('td').filter(function() {
    return $.trim($(this).text()) != '';
});

Это в конечном итоге даст вам все <td> в строке, в которых есть какой-либо текст, и вы можете сделать то, что хотите, снова получив значение text() ячейки таблицы.

Что касается вашего комментария, это должно сделать это:

$('tr.objectRow', '#resultsTable').find('*').contents().filter(function() {
    return $.trim($(this).text()) != '';
});
...