Я не утверждаю, что это самое элегантное, но в прошлом я делал такие вещи, просто добавляя пару дополнительных атрибутов к элементу при его создании. В этом случае я бы просто добавил атрибут baseAttrs, который содержит исходный объект настроек:
var paper = Raphael('canvas', 500, 500);
var circle = paper.circle(320, 240, 60);
circle.baseAttrs = {fill:'yellow'}; // add to the elem
circle.attr(circle.baseAttrs);
circle.animate({fill: "blue"}, 1000,
function(){
this.attr(this.baseAttrs);
});
В приведенном выше примере обратный вызов из анимации устанавливает атрибуты круга в значение baseAttrs
элемента, когда анимация завершена. baseAttrs
всегда будет удерживаться с кружком, независимо от того, что с ним происходит. http://jsfiddle.net/UVPeh/