我想你可以试试这样的。
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");
} );
演示。
关键是当鼠标进入另一个方块时,我们强制隐藏方块的图标。我们不能在“离开”时这样做(因为当鼠标离开一个区域而不去另一个区域时它会弄乱我们的动画),但是如果我们存储“上一个”,我们可以在下一个“进入”事件中做到这一点某种缓存中的图标。
更新还有另一种更简单的方法:
$(document).ready( function () {
$(".codebox").hover( function() {
$(".icon", this).delay(500).fadeIn("fast");
}, function() {
$(".icon", this).stop(true).delay(500).fadeOut("fast");
} );
});
...如果您不介意该块在鼠标刚刚经过时根本不会突出显示。)