我有一个包含这样的行的表:
<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});
答案 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()) != '';
});