Подсветка родительских ячеек таблицы
Подскажите, как реализовать, чтобы при наведении курсора на ячейку таблицы, подсвечивались все ячейки сверху и слева относительно данной до родительских ячеек (включая их), расположенных на первой сроке и первом столбце?
Нашел почти то, что нужно http://scriptsite.ru/examples/20091127/example6.html только бы ещё "хвосты обрубить". |
Demath,
Чо за хвосты? |
На картинке перечеркнуты красным, то есть чтобы не подсвечивало ячейки справа и снизу от ячейки, на которую навели курсор
![]() |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Подсветка колонок таблиц с jQuery</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function () { $('body').on('mouseenter','#tableone td',function () { //alert("A") var tr = $(this).parent('tr'); var Col = tr.find('td').index(this); var Span = $('#tableone tr').index(tr.get(0)); tr.find('td:lt(' + Col + ')').addClass('hover'); $('#tableone tr:lt(' + Span + ')').find('td:eq(' + Col + ')').addClass('hover'); }).on('mouseleave','#tableone td',function () { $('#tableone td').removeClass('hover'); }); }); </script> </head> <body> <style type="text/css"> body { background-color:#f0f0f0; } table { width:600px; margin:0 auto; font-family:Arial, Helvetica, sans-serif; border-spacing:0px; } td:hover, td.betterhover, td.hover { background-color:#c0e2ff; box-shadow:0 0 1px #006fcd; } </style> <table id="tableone"> <tbody> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>-</td><td>-</td><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> </tbody> </table> </body> </html> |
Deff,
немного сократил ваш код. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Подсветка колонок таблиц с jQuery</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> $(document).ready(function () { $('#tableone td').mouseenter(function () { //alert("A") var tr = $(this).parent('tr'); var Col = tr.find('td').index(this); var Span = $('#tableone tr').index(tr.get(0)); tr.find('td:lt(' + Col + ')').addClass('hover'); $('#tableone tr:lt(' + Span + ')').find('td:eq(' + Col + ')').addClass('hover'); }).mouseleave(function () { $('#tableone td').removeClass('hover'); }); }); </script> </head> <body> <style type="text/css"> body { background-color:#f0f0f0; } table { width:600px; margin:0 auto; font-family:Arial, Helvetica, sans-serif; border-spacing:0px; } td:hover, td.betterhover, td.hover { background-color:#c0e2ff; box-shadow:0 0 1px #006fcd; } </style> <table id="tableone"> <tbody> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>-</td><td>-</td><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>-</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> <tr><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr> </tbody> </table> </body> </html> |
рони,
Ксать в ИЕ6-7 Ваша версия значительно пошустрее |
Всем спасибо!
Подскажите, ещё, пожалуйста, как вызывать эту функция для таблицы, которая не загружается вместе со страницей (как обычно), а генерируется скриптом после нажатия кнопки пользователем (onclick)? Не могу разрулить самостоятельно :-E |
Попробуйте так
<script type="text/javascript"> $(document).ready(function () { $('body').on('mouseenter','#tableone td',function () { //alert("A") var tr = $(this).parent('tr'); var Col = tr.find('td').index(this); var Span = $('#tableone tr').index(tr.get(0)); tr.find('td:lt(' + Col + ')').addClass('hover'); $('#tableone tr:lt(' + Span + ')').find('td:eq(' + Col + ')').addClass('hover'); }).on('mouseleave','#tableone td',function () { $('#tableone td').removeClass('hover'); }); }); </script> |
Deff,
Не хватало двух закрывающих круглых скобок, добавил. Но всё равно Хром пишет: "Uncaught TypeError: Object [object Object] has no method 'on' ". Спасибо за помощь. |
Demath,
Поправил в своем сообщении со скриптом (В принципе вместо body - лучше ставить ближайшую не перезагружаемую Аяксом обертку |
Часовой пояс GMT +3, время: 04:05. |