jquery.colorを使用した単純なカラー アニメーションがあります。これは私のコードです:
$(document).ready(function(){
$('.fx_link').bind({
mouseenter: function(e) {
$(this).attr('originalColor', $(this).css('color'));
$(this).animate({ color: "#999999" }, 'fast');
},
mouseleave: function(e) {
$(this).animate({ color: $(this).attr('originalColor') }, 'fast');
$(this).removeAttr('originalColor');
}
});
});
そして、それはかなり良いです。ただし、アニメーションはメニュー項目用です。マウスがアイテム上にある場合、アニメーションが開始されます。次に、マウスをクリックすると、ページが更新されます。マウスはリンクにありますが、動きません。マウスが 1 ピクセルだけ移動するとすぐに、mouseenter イベントが発生し (マウスが既にリンク上にある場合でも)、バグと見なされるアニメーションが表示されます。
次のようなものが必要です。
$(this).bind({ mouseenter: function(e) {
if( __ mouse is not already over $(this) __ )
$(this).animate(...); } });
私はmouseenter、mouseoverでいくつかの状態を設定しようとしましたが..どうしようもありません
編集:
完全な例。これを名前を付けて保存h.html
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://code.jquery.com/color/jquery.color-2.1.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.fx_link').bind({
mouseenter: function(e) {
console.log("enter");
$(this).attr('originalColor', $(this).css('color'));
$(this).animate({ color: "#999999" }, 'fast');
},
mouseleave: function(e) {
console.log("leave");
$(this).animate({ color: $(this).attr('originalColor') }, 'fast');
$(this).removeAttr('originalColor');
}
});
});
</script>
<body>
<a class="fx_link" href="h.html">this is a link</a>
</body>
</html>