2011-07-15 8 views
3

私は単一の行と複数の<td>を持っています。私の機能の1つでは、currentSelectedTDが最後の<td>であるかどうかを調べなければならない状況に遭遇します。Current TDが最後のTDであるかどうかを調べる方法TR

私は$(currentSelectedTD).is(":last")を試しましたが、これはうまくいかず、常にtrueを返します。 私はまた働いていない他の可能性のカップルを試しました。

ありがとうございます。あなたは非常に簡単にこれをチェック、とjQueryを活用せずにできる

+0

あなたのコードのいくつかのより多くを投稿することができますか?単一のjQueryセレクタ(あなたがうまくいきませんでした)はほとんど役に立ちません。 –

答えて

4

あなたは要素が直後の兄弟を持っているかどうかを確認するために)(.next使用することができます。

if($(currentSelectedTD).next().length == 0) { 
    // is last 
} 
+0

はい、それは素晴らしく働いて..しかし、1つの問題。先に複数のTDが出席していましたが、私はいつも「1」の長さを持っています。最後のTDの場合は、長さ "0"を返します。そしてそれが私のために働いた理由。それをさらに説明してください。 – GirishK

+1

'.length == 0'は何かが存在するかどうかをテストする標準jQueryの方法です。 –

+1

.nextは、一致した要素の集合(1ノードのみ)内の各要素の直後の兄弟を返します。したがって、最後の.next()でない各tdに対して、$(currentSelectedTD)が一致しない限り、lengthは常に1になります。もちろん、1つ以上のノード。 – Corneliu

0

var isLastChild = currentSelectedTD.parentNode.lastElementChild == currentSelectedTD; 

これは、ネイティブのDOMとシンプルの両方であるという利点を持っている、しかし、それだけで(現代のブラウザ上で動作します例えばIE9を必要とします)。あなたは何かを扱うためにそれを微調整することができますが、それは1ライナーではありません。

+0

@GirishK:エラーがありました。私はそれを修正しましたが、おそらくあなたが受け入れた解決策はより現実的なアプローチです。 – Jon

+0

Yaa ..しかし、あなたのコードでjQueryを使いたくない人は助けになるでしょう。 – GirishK

+1

また、 'isLast = --td.parentNode.cells.length == td.cellIndex;'。すべてのブラウザ、IE 6でも動作します。 – RobG

0

:lastフィルタをフルセットで実行し、その結果を変数に格納する必要があると考えます。 次に、セットをループし、保存したものとそれぞれ比較します。

0

use-

if($('.currentSelectedTD:last')){ 
//do what ever you want 
} 

または

$lastTd = $('.currentSelectedTD').parent('tr').find('td:last') 
+0

最初の例は、常に 'if'を渡すjQueryオブジェクトを返します。 – pimvdb

+0

はい、私の場合も同じことが起こっています。しかし、もう一度試してみませんでした。 "if($(currentSelectedTD).next()。length == 0)"私のために働いた。 – GirishK

0

あなただけ使用する必要があります。

$(currentSelectedTD).is("td:last"); 
関連する問題