Это на самом деле немного сложно, потому что у вас есть несколько анимаций в очереди и обратный вызов.
Проблема в том, что если вы просто stop
, а затем позвоните upAndDown
, вы начнете анимацию стекущая позиция, то есть вы можете периодически перемещаться по странице.Вы также не можете jumpToEnd
в вызове stop()
, потому что вы все равно будете вызывать обратный вызов.
Я исправил это, добавив класс moving
, когда (соответственно) объект перемещается.Это используется в обратном вызове, чтобы решить, следует ли продолжать анимацию.
В итоге вы получите следующее:
http://jsfiddle.net/EkpNK/
Теперь, это продолжает анимацию, пока не завершит цикл,Если вы хотите, чтобы он немедленно прекратился, вы можете дважды вызвать .stop(false, true)
, чтобы остановить обе анимации и вернуться к исходному месту:
http://jsfiddle.net/EkpNK/1/
Если вы хотите остановиться на месте ипродолжить с того места, где вы остановились, потребуется дополнительный код.