如果我理解正確,你希望盒子是紅色的,直到有人徘徊,然後變成灰色,然後變成黑色,而不是紅色。
我更喜歡讓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/ –
我更新小提琴做你想做的事,看我的回答 –