2016-07-28 9 views
0

私は自分のウェブサイトに、1つのセルと背景色の変更を選択し、別のセル(同じ行にない)を選択して最初のセル新しく選択されたセルが背景色を変更している間、デフォルトの色に戻ります。私は周りを見回して、私がすでに持っているものや、チェックボックスの束について何かを見つけるように思えるだけです。私はフィドルhereを持っています。HTMLテーブルの中でtdを選択して解除する

ここに私のCSSです:

.selected { 
    background-color: rgba(0,0,0,0.4) !important; 
    color: #fff; 
} 

は、ここに私のjQueryの:

<script type='text/javascript'>//<![CDATA[ 
    $("#table2 td").click(function() 
    { 
     $(this).toggleClass('selected').siblings().removeClass('selected'); 
    }); 
    //]]> 
</script> 

<script type='text/javascript'>//<![CDATA[ 
    $("#table tr").click(function() 
    { 
     $(this).toggleClass('selected').siblings().removeClass('selected'); 
    }); 
    //]]> 
</script> 

は、ここに私のHTMLです:

<body> 

<table id='table'> 
    <tr> 
    <th>Month</th> 
    <th>Savings</th> 
    </tr> 
    <tr> 
    <td>January</td> 
    <td>$100</td> 
    </tr> 
    <tr> 
    <td>Second Row</td> 
    <td>Still Second Row</td> 
    </tr> 
</table> 
<br><br> 
<table id='table2'> 
    <tr> 
    <th>Month</th> 
    <th>Savings</th> 
    </tr> 
    <tbody> 
    <tr> 
    <td>January</td> 
    <td>$100</td> 
    </tr> 
    <tr> 
    <td>Second Row</td> 
    <td>Still Second Row</td> 
    </tr> 
    </tbody> 
</table> 
</body> 

私はtableは罰金選択と選択解除行を仕事を得ることができますが、 table2が正しく動作しません。ある行のセルを選択して同じ行のセルを選択しても動作しますが、別の行のセルを選択しても、最初のセルはデフォルトの色に戻されません。上のフィドルは何が起こっているかを示しています。

<tbody>を追加しようとしましたが、結果が変更されなかったため、正しく実行したとは思われません。

$('.selected').removeClass('selected');を追加しようとしましたが、部分的に機能しました。ある行のセルを選択して別の行のセルを選択し、背景色が正しく変更されますが、最初のセルを2回選択すると選択解除されません。

答えて

1

あなたがtdのために兄弟を選択する方法が間違っている、これを試してみてください

$("#table2 tbody td").click(function() 
{ 
    $(this).closest('table').find('td').not(this).removeClass('selected'); 
    $(this).toggleClass('selected'); 
}); 

Fiddle

+0

それはそれをしました!私は何か正しいことをしていないことを知っていた。私は昨日からjqueryで作業していました。 – Mike

0

あなたは<tbody></tbody>タグに<thead></thead>タグや身体の行であなたのヘッダ行をラップしてから使用することができます。

$("#table tbody tr, #table2 tbody tr").click(function() { 
    $(this).siblings().removeClass('selected').end().addBack().toggleClass('selected'); 
}); 

jsFiddle example

+0

<tr> <td>Second Row</td> <td>Still Second Row</td> </tr> 

のようなものにあなたのクリックイベント内のコードを調整します。

<tr> <td>January</td> <td>$100</td> </tr> 

は、この行のものの兄弟ではありません行を変更すると、私は2番目のテーブルのセルを変更できるようにしたい。 – Mike

1

あなたが.sibling()メソッドを呼び出しているが、兄弟ではない要素を変更することを期待しているので、これはtable2で実行していません。この行のTDさん:これがあるだけで

$(this).closest('table').find('td').not(this).removeClass('selected'); 
+0

私はこの部分を理解していませんでした。私は彼らが兄弟であることを彼らが ''であったので、私は考えました。ご説明ありがとうございます! – Mike

関連する問題