Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2013, 11:39
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

в IE9 не работает, а в ранних работает
имеется таблица, в которой цвет строк чередуется
<tr class="color1" ....>
<tr class="color2" ....>

нужно чтобы при наведении мышью строка меняла свой цвет на color3, который задан при помощи #listhover{color:color3;}

$('#listTable tr').hover(		
		function () {			
				$(this).attr("id","listhover");		
      }, 
		function () {
				$(this).removeAttr("id"); 
      }
	);


все распрекрасно работает во всех браузерах, кроме IE9, в котором строка после ухода с нее мыши попросту обесцвечивается (становится белой). То есть ощущение, что вторая функция в hover не только удаляет атрибут, задающий color3, но заодно и класс, определяющий изначальный цвет строки (color1 или color2).

Как с этим бороться?
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2013, 11:44
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

а почему не использовать вместо id = listhover class = active?
Тогда:
$('#listTable tr').hover(hoverTd, hoverTd);
function hoverTd() {
  $(this).toggleClass("active");
};
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2013, 11:53
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

почему-то этот вариант не работает.
firebug показывает при наведении <tr class="color1 listhover" , но цвет заданный в listhover не перекрывает цвет, заданный в color1
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2013, 11:57
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Тогда задавайте цвет для каждой конкретной ячейки таблицы, а не для всей строки:
$('#listTable tr').hover(hoverTd, hoverTd);
function hoverTd() {
  $(this).find('td').each(function () {
    $(this).toggleClass("active");
  });
};
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2013, 11:59
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Чтобы прописанный вами стиль цвета перекрывал ВСЕ стили (даже прописанные в style элемента) можете дописать !important, например:
color: red !important;

В css будет отробатываться тот стиль, который задан точнее. Например если у вас
.someClass .color1 {
/*стиль*/ }
#someId .someClass .active {
/*стиль*/ 
}

В данном случае отработает стиль active.

Последний раз редактировалось tsigel, 26.04.2013 в 12:04.
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2013, 12:02
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

тоже не работает. Этот вариант не добавляет цвет в ячейки.
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2013, 12:07
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

ура! ваш вариант
$('#listTable tr').hover(hoverTd, hoverTd);
function hoverTd() {
  $(this).toggleClass("active");
};

заработал, когда задал important для класса active

Спасибо большое!
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2013, 12:07
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Что-то вы не так делаете, выложите больше кода и желательно тестовый пример.

Сообщение от зверек
Этот вариант не добавляет цвет в ячейки.
Этот вариант добавляет класс в ячейки. Все зависит от того как вы прописываете стиль для этого класса.
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2013, 12:09
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

все заработало, спасибо. Просто пока я отвечал на одно сообщение, вы написали другое. Путаница вышла
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2013, 12:14
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Старайтесь по возможности избегать !important, это костыль, к тому-же не очень хороший. Им можно пользоваться только для таких временных классов, которые есть только при наведении и т.п., иначе замучаетесь вносить изменения в стилях и не сможете перекрывать их стилями из скрипта.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$.ajax не работает в IE9. В чем проблема? Vitaliy88 AJAX и COMET 1 25.03.2013 14:07
Не работает .setAttribute() в IE9 MEGApixel23 Internet Explorer 2 22.11.2012 15:01
В IE9 не работает кнопка отправить - type="submit" Edan Internet Explorer 3 24.12.2011 00:21
Проблемы с показом примеров кода в IE9 Pavel M. Сайт Javascript.ru 4 19.11.2011 22:48
Не работает OnSubmit="return false;" под IE9 konstantyn Events/DOM/Window 7 14.09.2011 20:55