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
を使用すると、複数のクリックが同時に認識されないようにすることができます。これはコードとまったく同じではありませんが、簡単に適応させることができます。
これを行う別の方法は、2回の実行に対してさらに耐性があるはずですが、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