2009-05-11 3 views
3

私は自分のアプリケーションでテーブルを作成しました.Gmailのチェックボックスをクリックすると全体の行を選択(背景色を変更)します.gmailのチェックボックスをクリックすると、行全体が黄色になります。jqueryを使用してテーブルの行を選択する方法は?

<table> 
<tbody> 
<tr> 
<td><input type="checkbox" name="chk" id="chk" /></td> 
<td>My Name</td> 
<td>Description of the job</td> 
</tr> 
</tbody> 
</table> 

jqueryで同じことを行う方法を教えてください。

+0

この問題を解決するために、@nickfと@cletusの回答を組み合わせて使用​​しました。実際に私は選択:All、None、Active、Inactiveの3つのチェックボックスを開発したいと思っています。これはgmailの動作と似ています。ですから、シングルクリックでは@ nickfの答えで行を選択することができました.AllとNoneに対しては@cletusの答えを使用しました。だから両方の+1。 – Prashant

答えて

7
$(function() { 
    $("#chk").click(function() { 
    $(this).parents("tr").toggleClass("diffColor"); 
    }); 
}); 

(上記 "diffColor" と呼ばれる)CSSクラスを作成して、何か方法は背景色を追加:

<style type="text/css"> 
tr.diffColor td { background-color: yellow; } 
</style> 

は、CSS属性を直接設定しないでくださいを。可能であれば、クラスを使用する。

+0

良い説明+1 – ichiban

5

Cletusの答えが正しいですが、私は少し改善することができると思う:

$(function() { 
    $("#chk").click(function() { 
     $(this) 
      .parents("tr:first") 
      .toggleClass("diffColor", this.checked) 
     ; 
    }); 
}); 

ここでの唯一の本当の違いは次のとおりです。

  1. それが唯一の最初<tr>を選択します。 ...あなたのコードがどこで終わるかも知れないことは決してありません。さらに理論的には、それはより迅速なチックになります。
  2. チェックボックスの新しい値をチェックし、必要に応じてクラスを追加または削除します。これをチェックせずに、行の "diffColour"クラスを変更する可能性がある他のコードと、あなたが意味するものが分かっていれば、チェックボックスが反転します。

また、あなたにもchangeハンドラにその機能を結合検討するかもしれない:

$('#chk').bind('click change', function() { // ... etc 
0

テーブルの行を選択するためのあなたは、私がTableRowSelector呼ば書いた単純なクラスを使用することができます。 例とコード例をチェックするhere

+1

あなたの答えと[この回答](http://stackoverflow.com/questions/2412001/select-table-row-in-jquery/6298535#6298535)は同一であり、潜在的な迷惑メールとしてフラグが立てられています。これらの答えは、OPの問題を解決するために何らかの方法で行くかもしれませんが、質問に対するあなたの答えを調整し、あなたの記事が何であるか、そしてどのように動作するかを要約し、ベストを実践します。ありがとう。 – Kev

関連する問題