jQuery 1.7.x:
$('tr').on('click','a', function () {
$(this).closest('tr').css({ 'background-color' : '#ccc'});
});
Я думаю, что вам нужно всего лишь изменить цвет фона TR
, а не TD
. Если я ошибаюсь, просто используйте это вместо:
$('tr').on('click','a', function () {
$(this).closest('tr').children('td').css({ 'background-color' : '#ccc'});
});
jQuery 1.6.x и ниже:
$('tr').delegate('a', 'click', function () {
$(this).closest('tr').children('td').css({ 'background-color' : '#ccc' });
});
EDIT
Согласно вашему комментарию ниже, вы хотите вернуть строку назад к нормальному цвету фона при нажатии на другую строку.
Чтобы сделать это эффективно, я бы посоветовал вам прибегнуть к правилам CSS. Черт возьми, если подумать, мы должны были это сделать, даже когда на вопрос был дан первый ответ.
Сначала определите правила CSS следующим образом:
tr { background-color:#fff; /* or your default */ }
tr.selected { background-color:#ddd; /* or your selected color */ }
затем переключите это с помощью jQuery:
$('tr').delegate('a', 'click', function () {
$(this)
.closest('tr').addClass('selected')
.siblings('tr').removeClass('selected')
;
});
Если простое изменение tr
не работает для вас, измените ваши правила CSS следующим образом:
tr td { background-color:#fff; /* or your default */ }
tr.selected td { background-color:#ddd; /* or your selected color */ }