我的网站上有几张桌子,我正在尝试编写2个功能
第一个功能是检查鼠标是否在行上,然后设置该行的背景颜色
第二个功能是检查鼠标是否离开一行,然后删除背景颜色
但我试图避免每一桌的第一行
HTML code:
<table>
<tr><td>Name</td></tr>
<tr><td>David</td></tr>
<tr><td>Lukas</td></tr>
</table>
<table>
<tr><td>Something Else</td></tr>
<tr><td>John</td></tr>
<tr><td>Pedro</td></tr>
</table>
JQuery代码:
$(document).on('mouseenter', 'table tr:not(:first)', function () {
$(this).css("background", "orange");
});
$(document).on('mouseleave', 'table tr:not(:first)', function () {
$(this).css("background", "");
});
我必须使用“.on”,因为第二个表是由Ajax请求加载的。
当我在第一张桌子的第一行输入鼠标时,什么都不会发生(没关系!)
但是当我进入第二张表的第一行时,它将被更改为
谢谢!
答案 0 :(得分:2)
使用first-child
代替first
。 fisrt
仅选择第一个元素,而first-child
选择所有第一个元素。
$(document).on('mouseenter', 'table tr:not(:first-child)', function () {
$(this).css("background", "orange");
});
$(document).on('mouseleave', 'table tr:not(:first-child)', function () {
$(this).css("background", "");
});
答案 1 :(得分:1)
您可以使用此CSS来实现在tr
上更改背景所需的行为,不包括第一个,而不使用JavaScript:
tr:not(:first-child):hover {
background: orange;
}
答案 2 :(得分:0)
你可以改用thead和tbody。
<table>
<thead>
<tr><td>Name</td></tr>
</thead>
<tbody>
<tr><td>Someone</td></tr>
<tr><td>Someone</td></tr>
<tr><td>Someone</td></tr>
</tbody>
</table>
然后
$(document).on('mouseenter', 'table tbody tr', function....