Вам нужна очередь. Вы можете создать его с помощью переменной семафора, но jQuery уже предоставляет ее, поэтому, возможно, вы захотите ее использовать:
$('.button').toggle(function() {
$(document).queue("foo", function() {
...
});
}, function() {
$(document).queue("foo", function() {
...
});
});
jQuery обычно использует очередь "fx" для сериализации анимации, но вы можете использовать эту очередь "foo" для чего угодно.
Очередь может быть помещена в любой объект, поэтому, возможно, вы захотите поместить ее в контейнер, в котором есть все .button
объекты. Вы не можете поставить его на кнопку (это) сами, или вы вернетесь туда, где находитесь сейчас.
После того, как вы это сделаете, все, что вам действительно нужно, это прервать анимацию. Это можно сделать, явно очистив очередь "fx", или вы можете использовать $('.button').stop();
, чтобы остановить все старые анимации.