Попробуйте привязать анимацию в методе обратного вызова, который вы можете передать в метод animate()
, вместо того, чтобы напрямую связать анимации вместе. jQuery docs state:
При условии, что полная функция обратного вызова запускается после завершения анимации. Это может быть полезно для последовательного объединения различных анимаций.
Я угадываю причину, по которой он не движется в настоящее время, заключается в том, что он одновременно пытается анимировать в противоположных направлениях. Это непроверенное, но попробовать:
$('#' + vet).css({'background-color':'yellow', 'border-color':'red' })
.animate({ left: '-=10px'}, 100, function() {
$('#' + vet).animate({left: '+=20px'}, 100, function() {
$('#' + vet).animate({left: '-=20px'}, 100, function() {
$('#' + vet).animate({left: '+=10px'}, 100);
});
});
});
Использование +=
также исключает установки положения к относителен. Теперь каждая анимация выполняется по завершении последней.
Редактировать: .animate().animate()
похоже на то, что в конце концов.
В качестве альтернативы использовать эффект jQuery UI для встряхивания. http://api.jqueryui.com/shake-effect/ – Thew