Вы можете использовать .find()
со следующим селектором, чтобы исключить первый и последний td
с каждого tr
:
$('table#tblSchoolList tr:gt(0)').hover(function() {
if ($(this).next().length != 0) {
$(this).find('td:not(:first-child, :last-child)').css("background", "red");
}
}, function() {
$(this).find('td:not(:first-child, :last-child)').css("background", "");
});
Функция по-прежнему будет срабатывать, если мышь находится над первым и последним td
с, но они не будут окрашиваться.
jsFiddle demo
Вы также можете использовать селектор со своими tr
s, устраняя необходимость в выражении if:
$('table#tblSchoolList tr:not(:first-child, :last-child)').hover(function() {
$(this).find('td:not(:first-child, :last-child)').css("background", "red");
}, function() {
$(this).find('td:not(:first-child, :last-child)').css("background", "");
});
В качестве небольшой вкусности я заметил, что смог преобразовать весь ваш код jQuery в одно правило CSS (работает только в современных браузерах):
table#tblSchoolList tr ~ tr:not(:last-child):hover td ~ td:not(:last-child) {
background: red;
}
Конечно, вы всегда можете оставить свое решение jQuery, если хотите совместимости со старыми браузерами или не можете понять, что означает приведенный выше CSS:)
jsFiddle demo