いつもお世話になります。
アンケートページを作成しており、
下記のような表を設置することになりました。
*実現したいこと
・マウスオンした箇所、縦軸・横軸の背景色が変わる
・表頭(選択肢1~5)・表側(項目1~2)も背景色が変わる
*現状できていること
・表頭(選択肢1~5)にマウスオンした際の背景色の変更(=縦軸はできている)
*現状できていないこと
・表側(項目1~2)にマウスオンした際の背景色の変更(横1列に色付けしたい)
・ラジオボタン部分にマウスオンした際の背景色の変更(表頭・横方向の色付けができない)
*補足
HTMLの構造は、理由あって、なるべく現状のままで進めたいです。
(クラス名の変更・追加程度ならOK、tableをulに変更する等は避けたい)
説明が拙く大変恐縮ですが、
ご教示の程よろしくお願いいたします。
HTML
1<div class="matrix"> 2 <table> 3 <thead> 4 <tr class="matrix_select"> 5 <th class="space"> </th> 6 <th class="arrow"><span class="head_display">選択肢1</span></th> 7 <th><span class="head_display">選択肢2</span></th> 8 <th><span class="head_display">選択肢3</span></th> 9 <th><span class="head_display">選択肢4</span></th> 10 <th><span class="head_display">選択肢5</span></th> 11 </tr> 12 </thead> 13 <tbody> 14 <tr> 15 <td class="ttl">項目1</td> 16 <td><label for="mt_sa_1"><span class="select_display">選択肢1</span><input type="radio" name="s1" value="" id="mt_sa_1" /></label></td> 17 <td><label for="mt_sa_2"><span class="select_display">選択肢2</span><input type="radio" name="s1" value="" id="mt_sa_2" /></label></td> 18 <td><label for="mt_sa_3"><span class="select_display">選択肢3</span><input type="radio" name="s1" value="" id="mt_sa_3" /></label></td> 19 <td><label for="mt_sa_4"><span class="select_display">選択肢4</span><input type="radio" name="s1" value="" id="mt_sa_4" /></label></td> 20 <td><label for="mt_sa_5"><span class="select_display">選択肢5</span><input type="radio" name="s1" value="" id="mt_sa_5" /></label></td> 21 </tr> 22 <tr> 23 <td class="ttl">項目2</td> 24 <td><label for="mt_sa_11"><span class="select_display">選択肢1</span><input type="radio" name="s2" value="" id="mt_sa_11" /></label></td> 25 <td><label for="mt_sa_12"><span class="select_display">選択肢2</span><input type="radio" name="s2" value="" id="mt_sa_12" /></label></td> 26 <td><label for="mt_sa_13"><span class="select_display">選択肢3</span><input type="radio" name="s2" value="" id="mt_sa_13" /></label></td> 27 <td><label for="mt_sa_14"><span class="select_display">選択肢4</span><input type="radio" name="s2" value="" id="mt_sa_14" /></label></td> 28 <td><label for="mt_sa_15"><span class="select_display">選択肢5</span><input type="radio" name="s2" value="" id="mt_sa_15" /></label></td> 29 </tr> 30 </tbody> 31 </table> 32</div>
CSS
1.matrix .ttl { background:#f0908d; } 2.matrix .ttl img {; display:block; max-width:100% margin:0 auto; } 3.matrix table { border-collapse:separate; border-spacing:2px; cursor:default; } 4.matrix th { padding:8px; background:#fab8b6; } 5.matrix td { padding:8px; text-align:center; } 6.matrix .select_display { display:none; } 7.matrix .space { background:#fff; } 8.matrix label { display:block; width:100%; height:100%; } 9.matrix textarea { width:100%; } 10.matrix td:nth-child(2n) { background:#f4f0f0; } 11 12.matrix th:hover, .matrix td:hover { background:#dff1f4; } 13.matrix .cursor { background:#dff1f4!important; }
javascript
1$(function (){ 2 3 // 表頭 4 $('.matrix th').on({'mouseenter': function (){ 5 6 // マトリクスの表が何行あるかを取得 7 var matrix_list = $('.matrix th').length; 8 9 // マウスカーソルがのっているセルにClassを追加 10 $(this).addClass('cursor'); 11 12 // マウスカーソルがのっているセルが左から何番目かを取得 13 var cursor = $(this).parent().find('th').index(this); 14 15 // マウスカーソルがのっているセルが左端でない場合 16 if(0 < cursor){ 17 18 // マウスカーソルがのっているセルの列に 19 for(var i=0; i<matrix_list; i++){ 20 21 // Classを追加 22 $('.matrix tbody tr').eq(i).children('td').eq(cursor).addClass('cursor'); 23 24 } 25 26 } 27 28 // マウスカーソルが外れた場合 29 }, 'mouseleave':function (){ 30 31 // Classを全て削除 32 $('.matrix th, .matrix td').removeClass('cursor'); 33 34 } 35 36 }); 37 38 // 表側 39 $('.matrix td').on({'mouseenter': function (){ 40 41 // マトリクスの表が何行あるかを取得 42 var matrix_list = $('.matrix td').length; 43 44 // マウスカーソルがのっているセルにClassを追加 45 $(this).addClass('cursor'); 46 47 // マウスカーソルがのっているセルが左から何番目かを取得 48 var cursor = $(this).parent().find('td').index(this); 49 50 // マウスカーソルがのっているセルが左端でない場合 51 52 // マウスカーソルがのっているセルの列に 53 for(var i=0; i<matrix_list; i++){ 54 55 // Classを追加 56 $('.matrix tr').eq(i).children('td').eq(cursor).addClass('cursor'); 57 58 } 59 60 61 // マウスカーソルが外れた場合 62 }, 'mouseleave':function (){ 63 64 // Classを全て削除 65 $('.matrix tr, .matrix td').removeClass('cursor'); 66 67 } 68 69 }); 70 71});

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/30 05:30