我创建了一个div来从视口的外滑动,并把自己在原来的股利。
动画是通过将鼠标悬停触发box1
。 这将使box2
代替box1
。
当鼠标离开box2
DIV,它将被再次置于视口之外。
然而,这个div内缓慢的光标移动会导致动画迅速触发。
$(document).ready(function() {
$('.box1').mouseover(function() {
$('.box2').stop().animate({
top: 0
}, 100);
}).mouseout(function() {
$('.box2').stop().animate({
top: '-200px'
}, 100);
});
});
下面拨弄应该说明问题。
http://jsfiddle.net/B9wx8/
不喜欢这一点,这两个元素绑定事件,这将解决这一问题
$(document).ready(function () {
$('.box1,.box2').mouseenter(function () {
$('.box2').stop().animate({
top: 0
}, 'slow');
}).mouseleave(function () {
$('.box2').stop().animate({
top: '-200px'
}, 'slow');
});
});
DEMO
你可以这样做:
var done = true;
$(document).ready(function() {
$('.box1').mouseenter(function() {
if (done){
done = false;
$('.box2').stop().animate({
top: 0
}, {duration: 400,
complete:
function(){
done = true
}
});
}
});
$('.box2').mouseleave(function() {
if (done){
done = false;
$('.box2').stop().animate({
top: -400
}, {duration: 400,
complete:
function(){
done = true
}
});
}
});
});
因此,检查动画仍在继续,只是如果没有启动下一个