Сейчас: 20:39:49   19-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеПодсветка строк на jQuery
23
59

Подсветка строк в таблице на jQuery

Ранее мы уже рассматривали подобный скрипт Подсветки строк в таблице по клику и при наведении курсора мышки, но тот скрипт был на чистом JavaScript и занимал много места.


Поэтому хотим Вам предложить более универсальный скрипт подсветки строк в таблице при помощи jQuery. Данный скрипт позволяет осуществляет подсветку строк таблицы, находящихся в данный момент под курсором мышки, а при клике по какой-либо строке таблицы, она будет выделена заданным цветом. При повторном клике по выделенной строке, выделение цветом пропадет. Также допускается выделение заданным цветом нескольких строк.


Обратите внимание на таблицу, расположенную ниже. Наведите курсор мышки на строки данной таблицы и покликайте по ним.

Первый столбец Второй столбец
1)#FF0000Красный
2)#FFFF00Желтый
3)#00FF00Лайм
4)#0000FFСиний

Как видно, подсветка и выбор строк в данной таблице смотрятся довольно эффектно. Выделение строк по клику может пригодиться в тех случаях, когда пользователь остановил свой выбор на нескольких значениях в строках и сравнивает их. Обратите внимание, что заголовки столбцов и нумерация строк не выделяются при наведении курсора или клике.


Чтобы получить подобную таблицу с подсвечивающими строками и мультивыбором строк, для начала пропишем стиль для номеров строк и заголовка столбцов. Для этого вставьте на своем сайте между тегами <head> и </head> следующий код:

HTML код:
<style type="text/css">
    .
color_table border1px solid blackcursorpointerborder-collapsecollapse; }
    .
color_table th#first_tr { background-color: lightblue; }
</style>

Далее, в том месте странички, где будет располагаться Ваша таблица, у которой мы будем подсвечивать строки, добавляем таблицу следующим образом:

HTML код:
<table class="color_table">
<
tr id="first_tr">
  <
td style="width: 25px;"></td>
  <
td style="width: 170px;">Первый столбец</td>
  <
td style="width: 170px;">Второй столбец</td>
</
tr>
<
tr>
  <
th>1)</th><td>#FF0000</td><td>Красный</td>
</tr>
<
tr>
  <
th>2)</th><td>#FFFF00</td><td>Желтый</td>
</tr>
<
tr>
  <
th>3)</th><td>#00FF00</td><td>Лайм</td>
</tr>
<
tr>
  <
th>4)</th><td>#0000FF</td><td>Синий</td>
</tr>
</
table>

Далее для работы скрипта нам потребуется библиотека jQuery. Если на Вашем сайте данная библиотека еще не подключена, то следует ее подключить следующим образом:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

Теперь Вам остается только добавить наш скрипт, который будет подсвечивать строки таблицы под курсором мышки и выделять их по клику. Для этого скопируйте следующий код:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
$(
".color_table tr:not(#first_tr)").addClass("colors");

$(
".colors:last").css("background-color""#90ee90");
var 
tr_clr = $(".colors:last").css("background-color");
$(
".colors:last").css("background-color""white");

$(
".colors").hover(function(){
 if ($(
this).css("background-color")!=tr_clr)
  $(
this).css("background-color""yellow")},function(){
 if ($(
this).css("background-color")!=tr_clr)
  $(
this).css("background-color""white")
});

$(
".colors").click(function(){
 if ($(
this).css("background-color")!=tr_clr)
  $(
this).css("background-color",tr_clr)
 else $(
this).css("background-color","yellow")
 });
});
</script>

В результате у Вас на сайте должна появиться точно такая же таблица, как и в примере, при наведении на строки которой они будут приобретать желтый фон, а при клике на них, фон станет зеленоватым.


Вы наверняка обратили внимание на следующий участок кода:

Цитата:
$(".colors:last").css("background-color""#90ee90");
var 
tr_clr = $(".colors:last").css("background-color");
$(
".colors:last").css("background-color""white")

Хотим Вас уверить, что тут нет никакой ошибки и это сделано специально. Вся суть заключается в том, что разные браузеры хранят в переменных цвета в различных форматах. Так вот для того, чтобы не прописывать для каждого браузера в переменную цвет отдельно, мы пошли на хитрость, путем присвоения последней строке таблицы нужного цвета, для последующего считывания данного цвета в нужном формате в переменную и перекрашивание строчки обратно в белый цвет.


Если вдруг Вам потребуется подсвечивать и выделять цветом не строки, а отдельные ячейки в таблице, то Вам просто потребуется в строку $('.color_table tr:not(#first_tr)').addClass("colors"); добавить td после (#first_tr).


P.S. После поступления нескольких рекомендаций по улучшению работы скрипта, код был доработан и выложен в виде новой темы - JQuery подсветка строк таблицы.

Дата создания: 16:02:47 07.06.2013 г.
Дата обновления: 23:07:42 17.11.2014 г.
Посещений: 11828 раз(а).

Комментарии посетителей (13 шт.):
Николай
1
# 1024
(18:40:51  06.08.2013 г.)

Автор, не работает. При наведении выделяется желтым, при клике - зеленым, а при отведении выделение снимается. Проверял в Google Chrome, какой-то там сейчас уже 100500-ый?
Ответить

Administrator
0
# 1025
(21:20:57  06.08.2013 г.)

Спасибо за найденную недоработку. Как оказалось, разные браузеры хранят в переменных цвет в различных форматах и обычное сравнение с "#90ee90" в Google Chrome не работало. Пришлось скрипт немного доработать и обновить тему.
Ответить

Владимир
1
# 1293
(15:42:00  16.11.2013 г.)

А можно как-нибудь сделать так, что бы можно было массово выделять при удержании кнопки Shift?
Ответить

Евгений
-1
# 1340
(10:32:51  17.12.2013 г.)

Спасибо за пример. А как сделать, чтобы выбор был уникальным. Только одна строка, и в случае выбора другой строки, подсветка сбрасывалась у ранее выбранной. Спасибо.
Ответить

Administrator
0
# 1341
(20:23:18  17.12.2013 г.)

Добавьте после строчки: $(".colors").click(function(){
строчку: $(".colors").css("background-color","white");
Ответить

Александр
0
# 3365
(10:08:53  15.08.2016 г.)

Это работает, переходы становятся уникальными, но, цвет "залипает" на строке до перехода на другую строку, скажите, а как сделать так, чтобы при повторном щелчке на подсвеченной строке цвет опять становился белым?
Ответить

Administrator
0
# 3366
(20:48:43  15.08.2016 г.)

Замените функцию целиком на такую:
$(".colors").click(function(){
if ($(this).css("background-color")!=tr_clr) {
$(".colors").css("background-color","white");
$(this).css("background-color",tr_clr)
}
else $(this).css("background-color","yellow")
});
Ответить

Степан
0
# 1517
(19:51:25  10.03.2014 г.)

Отличное разъяснение. А вот как сделать подсветку строки с активной на текущий день котировкой в таблице с котировками валют, меняющимися раз в неделю? Котировки обновляются в понедельник и нужно даже при просмотре в воскресенье подсвечивать строчку с котировкой прошедшего понедельника?
Ответить

Могсемчйег
0
# 1948
(23:14:26  06.10.2014 г.)

Как сделать, чтобы подсветка "плавно загоралась и потухала"? То есть не сразу из белого в желтый и обратно в белый, а постепенно? Можно ли это вообще сделать?
Ответить

Administrator
0
# 1950
(12:58:32  07.10.2014 г.)

$(this).animate({ backgroundColor: "yellow"}, 400);
Но работать будет только при подключении дополнительной библиотеки JQuery UI.
Ответить

Владимир
0
# 2036
(13:19:06  14.11.2014 г.)

Когда таблица большая, не очень удобно иметь все строчки одного цвета. У меня в коде с помощью php генерируется таблица с чередующимися строчками. Серая, белая, серая, белая и т.д.
В цикле это выглядит так:
$y++;
($y & 1) ? $color='#CDCDCD' : $color='white';
echo '<tr style="background-color: '.$color.'">';

Используя Ваш код, что нужно добавить, чтобы у меня, после снятия наведения/выделения по клику, строка окрашивалась в её "родной цвет", сгенерированный php?
Ответить

Administrator
0
# 2043
(22:54:17  17.11.2014 г.)

Немного подумав, решил сделать в виде отдельной темы - JQuery подсветка строк таблицы.
Ответить

КЭП
-1
# 3399
(18:39:20  31.08.2016 г.)

.color_table tr:hover { background: #0F0; }
Ответить

Закрыть
Ваше имя:
477 + 12 =
Добавить комментарий:
Ваше имя:
477 + 12 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 9

Какой браузер Вы используете?