2011-12-13 15 views
10

最後にを表示したいtdをテーブル内の各trに入れます。jQueryで表示されるすべての最後の子を選択してください

表示されている場合は最後の子を選択しようとするので、これは動作しません:

var last_visible_cells = $(table).find("tr td:visible:last-child"); 

これまでのところ、私が考えてきた最も簡単な方法はtrをループに.eachを使用することです新しいセレクタリストに最後に表示されるtdを追加します。

もっと簡単な方法はありますか?このようなことは何ですか?

var last_visible_cells = $(table).find("tr").lastMatching("td:visible"); 
+0

ような何かを行うことができ、すべての最後の目に見えるを取得します。 – Mathletics

+0

ありがとうございます。構文が修正されました。 –

答えて

20

あなたはそれを行うことができます。

$('table tr').find('td:visible:last').addClass('last-visible'); 

がMathleticsからの回答が、nextUntil()を使用してに基づいて

+0

ありがとう!それはまさに私が探していたものです。 –

0

あなたはすべてのTDを取得し、その横に見えるの要素を持っていないものだけをフィルタリングします。

ダングは、行の中央に目に見えない部分がない場合にのみ機能します。

+0

​​タグのグループが可視性(例えば、0101010)で交互に表示されている場合、「次のタグが表示されていないすべてのタグを表示」を選択すると、最後のタグのみではなく、代わりに、nextUntil()を使用します。 http://api.jquery.com/nextUntil/ – ChessWhiz

+0

@ChessWhizええ、私はそれを持っています。 – Mathletics

0

full example(jQueryの1.2+互換)を参照してください。これは、次の目に見えるタグを持たない目に見える各タグを見つける。

$('table tr').children('td').filter(function() { 
    return $(this).is(':visible') && $(this).nextUntil(':visible').length === 0; 
}) 
2

それらあなたが最初のものでも有効な構文ではないことを

$('table tr').each(function(){ 
    console.log($(this).find('td:visible:last')) 
}) 
関連する問題