使用jQuery在表中查找文本

时间:2009-06-19 00:41:53

标签: jquery textnode

我有一个包含这样的行的表:

<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 个答案:

答案 0 :(得分:2)

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()) != '';
});