Я пытаюсь выделить строки таблицы при наведении мыши. Каждая строка (tr) уже имеет класс «четный» или «нечетный». Итак, чтобы выделить строку при наведении курсора мыши, мне нужно сначала удалить класс CSS «четный» или «нечетный» из строки. Пожалуйста, возьмите много за мой сценарий:
$('tr').hover(function() {
if ($('this').hasClass('even')) {
$(this).removeClass('even');
$(this).addClass('rowhover');
}
else {
$(this).removeClass('odd');
$(this).addClass('rowhover');
}
},
function() {
$(this).removeClass('rowhover');
});
Но это не работает. Можете ли вы указать мне на ошибку? Спасибо.
Обновление 1:
Я использовал этот toggleClass liket this
$("tr").hover(function() {
$(this).toggleClass("rowhover");
});
Затем я использовал firebug, чтобы проверить элемент, tr получил класс, подобный этому:
<tr class="even rowhover"> where it should be <tr class="rowhover">
Тот же результат, если я использую что-то вроде этого:
$('tr').hover(function() {
$(this).addClass('rowhover');
},
function() {
$(this).removeClass('rowhover');
});
Мой CSS для класса rowhover
.rowhover {background:green !important;}
Обновление 2:
Я попробовал предложение от Джастина Джонсона:
$('tr').hover(function() {
$(this).removeClass('even odd').addClass('rowhover');
},
function() {
$(this).removeClass('rowhover').addClass(this.rowIndex % 2 == 0 ? "even" : "odd");
});
Я проверил элемент с помощью FireBug, вот результат:
//Notice the space in the class=" rowhover" when mouse hover
<tr class=" rowhover">
//Notice the space in the class=" even", class=" odd" when mouse out
<tr class=" even"> or <tr class=" odd">
Обновление 3: работает!
Я последовал за публикацией в jQuery - Демонстрации и примеры плагина Tablesorter , но мне нужно было добавить!
tr.overRow td { background-color:#FFFF99 !important; border :2px; }
Я добавил это правило в конец таблицы стилей для сортировщика таблиц, а затем использовал следующий скрипт для управления им:
// Adds "over" class to rows on mouseover
$(".tablesorter tr").mouseover(function() { $(this).addClass("overRow"); });
// Removes "over" class from rows on mouseout
$(".tablesorter tr").mouseout(function() { $(this).removeClass("overRow"); });
Теперь все работает так, как задумано. Спасибо всем за предложение. Извините, что не упомянул, во-первых, что я использую плагин jQuery tablesorter, и я просто хочу выделить строку при событии hover.
: D