Вам нужно немного разбираться в математике, чтобы достичь того, что вы хотите сделать, надеюсь, это не так сложно понять ...
var degrees=0, seconds=0, previousRotation=0;
$("#spinner").click(function(){
previousRotation = degrees;
degrees+= parseInt(Math.random() * 360 + 180);
//you should adjust this formula
miliseconds = parseInt((degrees - previousRotation)) * 5;
$(this).css({
"-webkit-transform" : "rotate("+ degrees +"deg)",
"-webkit-transition-duration" : miliseconds + "ms"
});
});
Я использую переходы CSS вместо анимаций, потому что они болеепросто.
Формула милисекунды = ... делает переход более продолжительным, если нужно перенести больше градусов.Надеюсь, вы сможете интегрировать все это в код, который вы уже написали.
Вы можете увидеть демо здесь: http://jsfiddle.net/XkNrf/