2011-11-16 9 views
1

私はとてもシンプルなものを実現できません。どこが間違っているのか分かりません。お知らせ下さい。 目標は、それに対応するチェックボックスが選択されているテーブル行を強調表示することです。私はいくつかの例を引用しました.closest( 'tr')や.parent( 'tr')を使ってこの問題を解決していますが、私の場合はいくつか理由があります。 1つは選択されています。Jqueryは親の<tr>に移動します。 parent()またはclosest()セレクタを使用する際の問題

マイHTML

<tr class="EvenRowClass"> 
<td class="ColClass"> 
    <div class="wrapClass" "> 
<span class="tableCol" style="background: someimage.png") </span> 
<span class="tableCol" style="background: someimage.png") </span> 
<input id="Check1" class="selectCheck" type="checkbox" 
     onclick="highlightRow(this,Check1); return false;" value="Check1"> 
</div> 
</td> 
<td>SomeCode</td> 
<td>SomeCode</td> 
<td>SomeCode</td> 

は、クリックに呼び出さ

マイJavaScript関数)各チェックボックスシーケンシャルのためのユニークなIDを持つようなコードの別のブロックがあると仮定します
function highlightRow(checkbox, id) 
{ 
    $("tr:parent").toggleClass("highlight", checkbox.checked); 
} 

上記のjavascriptは、すべてのin the taを選択しますそれがチェックされているかどうかにかかわらず、ページの残りの部分と残りの部分を削除し、ハイライトクラスを適用します。 チェックボックスセレクタ、.closest( 'tr')、.parent( 'tr')を使っていくつか他のバージョンを試しましたが、どれも私のために働いていませんでした。

言及された最後のいくつかは、テーブル内の唯一のものであり、ページ上の他のものには影響しないという点でのみ優れています。

お知らせください。私はこれで十分な頭を傷つけて、今は傷つき始めた。

答えて

1
function highlightRow(checkbox, id) { 
    $(checkbox).closest('tr').toggleClass('highlight', checkbox.checked); 
}; 
+0

ゴールデン。どうもありがとう。これはうまくいった。しかし、私は質問がありますか? 'function highlightRow(チェックボックス、id) { var id = id;のようにセレクタとしてIDだけを使用すると、同じことはできません。 $(#id).parents( "tr")。toggleClass( "highlight"、 checkbox.checked); } ' – user1006072

+0

あなたは '$('# '+ id).'を実行する必要があります。チェックボックスやIDを渡して '$(this) 'とすることもできません。 – ThinkingStiff

0

これを試してみてください:

function highlightRow(checkbox, id) 
{ 
    $(checkbox).parents("tr").toggleClass("highlight", checkbox.checked); 
} 
+0

ゴールデン。しかし、私は質問がありますか? function highlightRow(チェックボックス、id) { var id = id;と同じIDをセレクタとして使用すると、同じことはできません。 $(#id).parents( "tr")。toggleClass( "highlight"、 checkbox.checked); } – user1006072