如果鼠标悬停在表格行上,我想更改(动画)表格行的颜色。你能帮帮我吗?感谢。
td{width:200px;text-align:center; background-color:gray;}
$('tr').mouseover(function() {
$(this).animate
({ backgroundColor: "red" }, 1000);
});
$('tr').mouseout(function() {
$(this).animate
({ backgroundColor: "gray" }, 1000);
});
答案 0 :(得分:4)
$('tr').mouseover(function() {
$('td', this).stop(true, true).animate
({ backgroundColor: "red" }, 1000);
});
$('tr').mouseout(function() {
$('td', this).stop(true, true).animate
({ backgroundColor: "#666" }, 1000);
});
表行不响应背景颜色,因此您可以更改内部td
的背景。由于某种原因,它根本不喜欢“灰色”。以为这实际上是一个有效的CSS颜色名称,但显然不是。我使用“#666”代替,它工作正常。我还介绍了stop(true, true)
。这将停止元素上的任何正在进行的动画,因此当前的动画可以继续。它可以使外观和响应更加平滑。
答案 1 :(得分:1)
$("table tr ").hover(
function(){
$(this).animate
({ backgroundColor: "Red" }, 1000);
},
function(){
$(this).stop(true,true).animate
({ backgroundColor: "White" }, 1000);
}
);
使用.stop(true,true)
来阻止鼠标频繁悬停时发生动画
答案 2 :(得分:0)
$('tr td').mouseover(function(){
$(this).css('background-color','#f00');
}).mouseout(function(){
$(this).css('background-color','#444');
});
答案 3 :(得分:0)
尝试使用hover而不是mouseover和mouseout:
$('tr').hover(function() {
$(this).animate({ "background-color" : "red" }, 1000);
},
function () {
$(this).animate({ "background-color" : "gray" }, 1000);
});
答案 4 :(得分:0)
你有两个问题:
您正在为tr
的颜色设置动画,但这会被td
样式覆盖。
更改为
$('tr').mouseover(function() {
$(this).find('td').animate
({ backgroundColor: "red" }, 1000);
});
将mouseover
工作。
由于某些原因,jQuery不喜欢gray
函数中的mouseout
。不知道为什么会这样,但是如果你改成例如
$('tr').mouseout(function() {
$(this).find('td').animate
({ backgroundColor: "#aaa" }, 1000);
});
我也更喜欢使用其他几个建议的hover
解决方案,但他们没有解决这些问题