如果我理解正确,你希望盒子是红色的,直到有人徘徊,然后变成灰色,然后变成黑色,而不是红色。
我更喜欢让CSS尽可能多地完成工作,因为它经常处理得更快,更容易与之合作,特别是对于如此简单的事情。在大多数情况下,CSS动画可以替代jQuery的动画功能。 jQuery只需要设置一个标志,表示该框已被徘徊,然后在此之后就不再需要了。
的jQuery:
我使用更新后的“开启”功能,鼠标悬停,所以你可以很容易地将其关闭在不需要的时候。这基本上是在第一次悬停时在箱子上设置一个班级。
$(document).ready(function() {
$('.spring').on('mouseover', function() {
$('.spring')
.addClass('touched')
.off('mouseover');
});
});
CSS:
我发现动画是平滑的,并允许使用CSS转换,而不是jQuery的动画更精细的控制。我们将悬停状态设置为灰色,将隐藏的类设置为黑色,并且CSS中的所有内容都正确。
.spring {
background: red;
width: 100px;
height: 30px;
transition: background 0.5s ease
}
.spring:hover, .spring.touched:hover {
background: #ccc;
}
.spring.touched {
background: #000;
}
这使您可以轻松控制外观的每个方面,而无需将繁琐的CSS代码添加到jQuery中。
See the Fiddle here
只能有一个问题,在您使用它,检查表CSS动画的支持: http://caniuse.com/css-animation。我通常认为过渡是一个“很好有”的项目,而不是一个必要的,所以我并不担心IE9及以下版本不会看到过渡。他们仍然可以很好地改变颜色,所以没有任何功能丢失。没有在JavaScript中的所有垃圾的好处是值得的。
一边注意小提琴没有包含jQuery ... – koosa
你的jsfiddle有错误,这里是一个更新的(不做你想要的东西)http://jsfiddle.net/3f4RQ/2/ –
我更新小提琴做你想做的事,看我的回答 –