前提・実現したいこと
HTMLのテーブルで、マウスオーバーした際に行と列の背景色が変わるようにしたいのですが、同じページ内に同じクラス名(.stripeTable)のテーブルが複数あると、マウスオーバーしていないテーブルにも影響を与えてしまいます。
背景色の変更は、ページ内にテーブルが1つしかない時にはうまく反映されています。
最悪、各テーブルごとにIDかクラス名を変えて、それぞれに対応したスクリプトを用意すれば対応できるのでしょうが、eachや$(this)などを使ってうまくやれるのではないかというところで行き詰まっております。
よい対処方法がありましたらよろしくお願いいたします。
【追記】
テーブルは1行目の<tr>内は全て<th>
2行目以降は<tr>内の最初だけ<th>で、残りは全て<td>にしているため、
スクリプトのnth-child()内で-1や+2で調整しています。
上記の条件であれば、セルが増えてもマウスオーバー時には十字方向にセルの背景色が変わるのですが、
ページ内に同じクラス名のテーブルが増えると、狂ってきます。
発生している問題・エラーメッセージ
エラーメッセージはなし
該当のソースコード
jQuery
1$(function(){ 2 3 $(".stripeTable tr").mouseover(function(){ 4 $(this).addClass("hover"); 5 }).mouseout(function(){ 6 $(this).removeClass("hover"); 7 }); 8 9 $(".stripeTable tr td").mouseover(function(){ 10 $(".stripeTable tr td:nth-child("+($(".stripeTable tbody tr td").index(this)%($(".stripeTable thead tr th").size()-1)+2)+")").addClass("hover"); 11 }).mouseout(function(){ 12 $(".stripeTable tr td:nth-child("+($(".stripeTable tbody tr td").index(this)%($(".stripeTable thead tr th").size()-1)+2)+")").removeClass("hover"); 13 }); 14 15});
html
1<table class="stripeTable"> 2<thead> 3<tr> 4<th></th> 5<th>A</th> 6<th>B</th> 7<th>C</th> 8</tr> 9</thead> 10<tbody> 11<tr> 12<th>1</th> 13<td></td> 14<td></td> 15<td></td> 16</tr> 17<tr> 18<th>2</th> 19<td></td> 20<td></td> 21<td></td> 22</tr> 23<tr> 24<th>3</th> 25<td></td> 26<td></td> 27<td></td> 28</tr> 29<tr> 30<th>4</th> 31<td></td> 32<td></td> 33<td></td> 34</tbody> 35</table>
CSS
1tr.hover td, 2td.hover { 3 background-color: lightyellow; 4}
試したこと
eachや$(this)などを使ってみたのですが、まだ習得不足のこともあり、自力では解決できませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/24 13:53
2018/02/24 14:59
2018/02/24 15:54
2018/02/24 16:02
2018/02/25 03:58