Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Зебра В Таблице

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 11 Декабрь 2011 - 09:39

Создал зебру, теперь хочу что бы при наведение менялся background.
Мой стиль замены бекграунда:
tr.zhover {
	background: #e5f3f9;
}
Сам код:
$(function() {
	$('body').css('background', 'white');
	$('#celebs tbody tr:even').css('background', '#e6e6fa');
	$('#celebs tbody tr:even').css('background', '#ffc0cb');
	
	$('#celebs tbody tr').hover(function() {
		$(this).toggleClass('zhover'); // при наведение присваиваю выбранной строке класс zhover
	});
});

В итоге меняют свой стиль только четные колонки (2, 4, 6, ...). В чем может быть проблема? Я подозреваю что просто мой стиль zhover что то перекрывает.

 

 

  • 0


#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 11 Декабрь 2011 - 11:27

Можно так:
<style type="text/css">
		.evenColor{
			background: #ffc0cb;
		}
		
		.zhover {
			background: #e5f3f9;
		}		
	</style>
<script type="text/javascript">
		$(document).ready(function(){
			$('body').css('background', 'white');
			$('#celebs tbody tr:even').addClass('evenColor');
	
			$('#celebs tbody tr').hover(function() {
				$(this).toggleClass('zhover'); // при наведение присваиваю выбранной строке класс zhover
			});
		});
	</script>

  • 0


#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 11 Декабрь 2011 - 12:21

а почему в моем случае не работает?
  • 0


#4 Евгений

Евгений
  • Пользователь
  • 481 сообщений
  • Репутация: 0

Отправлено 11 Декабрь 2011 - 13:04

tr:hover {background:#цвет}
такое не работает с jquery?
  • 0

#5 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 11 Декабрь 2011 - 20:01

Такое работает независимо от того, используется jquery или нет .
Но не работает в IE6, который понимает псевдокласс hover только для ссылок. :)


  • 0

#6 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 11 Декабрь 2011 - 22:46

а почему в моем случае не работает?

Я так понимаю из-за системы приоритетности CSS. То бишь, указав правило для нечетных строк таким образом:
$('#celebs tbody tr:even').css('background', '#ffc0cb');
Это все равно, что указать стиль элементу непосредственно в разметке:
<tr style="background:#ffc0cb">

Данное правило имеет гораздо больший приоритет, чем правило класса, соответственно, остается цвет правила с бОльшим приоритетом.
Для примера, можно смоделировать такую безумную ситуацию ;)
#child{color: green;}
		.child{color:blue;}
		#parent p{color:red;}
		#parent p.child{color:yellow;}
		#parent p#child{color:gray;}
<div id="parent">
<p id="child" class="child" style="color:#9200D7">Text</p>
</div>

Все цвета прописаны для одного элемента, но будет применено правило с наибольшим приоритетом (указанное напрямую) - style="color:#9200D7"
Именно поэтому для правильной работы лучше задавать класс и его затем же менять на другой класс.
  • 0



Оформление форума – IPBSkins.ru