Я нашел эффект дрожания в вопросе stackoverflow ( здесь )
Код, как показано ниже;
jQuery.fn.shake = function(intShakes, intDistance, intDuration) {
this.each(function() {
$(this).css("position","relative");
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
return this;
};
но мне нужен способ добавить функцию обратного вызова (или любой другой простой способ) для изменения цвета границы встряхивающего элемента перед эффектом и переключения на оригинальный цвет после анимации компиляции.
Я пробовал как ниже, но без шансов рамка сразу превращается в оригинальный цвет)
jQuery.fn.shake = function(intShakes, intDistance, intDuration,callback) {
this.each(function() {
$(this).css("position","relative");
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
if(callback) callback();
return this;
};
и звоните вот так
$elem.css('borderColor','red');
$elem.shake(3,5,500,function(){
$elem.css('borderColor','#a6caf0');})
Вы можете найти пример JSFiddle здесь . (Если вы отмените функцию обратного вызова в fiddle, вы увидите, что границы становятся красными, но обратный вызов не выполняется.)
Так прямо сейчас ...