2

次のような行を持つテーブルがあります。

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

1 に答える 1

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()) != '';
});
于 2009-06-19T00:45:10.383 に答える