$("#right").live("click", function(event) {
$(".image_scroll").animate({"left": "+=300px"}, "slow");
});
我需要点击基本上不会注册,直到动画完成。
我尝试过使用return false
,但这似乎完全破坏了链接。
也尝试使用$(".image_scroll").stop().animate({"left": "+=300px"}, "slow");
,但这只会使动画口吃并且看起来很糟糕。
修改:代码#right
位于图片上,而不是a
代码。 HTML如下:
<img src="/images/right.png" id="right" alt="" />
<div id="container">
<div id="image_scroll">
<img src="1.jpg" />
<img src="3.jpg" />
<img src="4.jpg" />
</div><!-- /#image_scroll -->
</div> <!-- /#container
答案 0 :(得分:1)
您需要提供动画回调...
$("#right").live("click", function(event) {
event.preventDefault();
var src = $(this).attr('href');
$(".image_scroll").animate({"left": "+=300px"}, "slow", function() { window.location.href = src; });
});
答案 1 :(得分:1)
您需要存储动画是否正在运行,您可以使用jQuery.data函数:
$("#right").live("click", function(event) {
var el = $(this),
state = el.data('animation_state');
if(state == 'busy') {
//ignore clicks while the animation is running
return false;
}
el.data('animation_state', 'busy');
$(".image_scroll").animate({"left": "+=300px"}, "slow", function() {
//finished animating
//set the state to finished so we can click the element the next time
el.data('animation_state', 'complete');
});
});
答案 2 :(得分:0)
var handler = function(event) {
$("#right").die("click");
$(".image_scroll").animate({"left": "+=300px"}, "slow", function(){
$("#right").live("click", handler);
});
};
$("#right").live("click", handler);
答案 3 :(得分:0)
检查动画是否正在运行,如果是,
$("#right").live("click", function(event) {
if ( $(".image_scroll").is(":animated") ) {
return false;
}
$(".image_scroll").animate({"left": "+=300px"}, "slow");
});