私はあなたがこのようなことを試みるかもしれないと思います。
var $prev;
$(".codebox").hover( function() {
var $icon = $(".icon", this);
if ($prev) {
$prev.stop(true)
.delay(500).fadeOut('fast'); // so animation will be shown here as well
}
$icon.delay(500).fadeIn("fast");
$prev = $icon;
}, function() {
$(".icon", this).delay(500).fadeOut("fast");
} );
デモ。
重要なのは、マウスが別のブロックに入ると、ブロックのアイコンを強制的に非表示にすることです。'leave'では実行できません(マウスが1つの領域を離れるだけで、別の領域に移動しないとアニメーションが台無しになるため)が、'previous'を保存すると、次の'enter'イベントで実行できます。ある種のキャッシュのアイコン。
更新別の、はるかに簡単な方法があります:
$(document).ready( function () {
$(".codebox").hover( function() {
$(".icon", this).delay(500).fadeIn("fast");
}, function() {
$(".icon", this).stop(true).delay(500).fadeOut("fast");
} );
});
...マウスがブロックを通過したときに、そのブロックがまったく強調表示されないことを気にしない場合。)。