2009-06-19 2 views
2

У меня есть таблица, которая имеет строки так:Поиск текста в виде таблицы с JQuery

<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}); 

ответ

2

text функция JQuery возвращает объединенные текстовое содержимое элемента, так что вам не придется беспокоиться о 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()) != ''; 
}); 
+0

Спасибо. Я не задал вопрос правильно. Множество, в котором я нуждаюсь, это элементы, содержащие текст. В моем примере это будет состоять из одного a и 2 p узлов. –

Смежные вопросы