您可以利用animate
在动画完成时调用函数的事实来做到这一点。例如:
http://jsbin.com/adokiz/2
我们要做的是:
$(document).ready(function() {
var running = false;
$('img').on('click', function(event) {
if (running) return;
running = true;
console.log(this);
$(this).animate({top: '400px'}, function() {
$(this).css({top: 0});
running = false;
});
});
});
使用命名的全局变量running
,您可以防止同时识别多个点击。这与您的代码不完全相同,但您可以轻松地对其进行调整。
另一种更能抵抗被执行两次的方法是使用 jQueryone
来绑定它,如下所示:
$(document).ready(function() {
var animation;
var binding = function() {
$('img').one('click', animation);
};
animation = function(event) {
$(event.target).animate({top: '400px'}, function() {
$(event.target).css({top: 0});
binding();
});
};
binding();
});
演示:http: //jsbin.com/adokiz/3