(function() {
// compatibility layer with mootools 1.2 element storage system
// scoped
var storage = {}, Native = {
UID: 1
};
var $uid = (window.ie) ? function(item){
return (item.uid || (item.uid = [Native.UID++]))[0];
} : function(item){
return item.uid || (item.uid = Native.UID++);
};
var get = function(uid){
return (storage[uid] || (storage[uid] = {}));
};
Element.extend({
retrieve: function(property, dflt){
if (!this.uid)
$uid(this);
var storage = get(this.uid), prop = storage[property];
if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
return $pick(prop);
},
store: function(property, value){
if (!this.uid)
$uid(this);
var storage = get(this.uid);
storage[property] = value;
return this;
}
});
})();
var myEl = $("myelement");
myEl.store("message", "new message, click to restore original");
myEl.store("oldMessage", myEl.getText());
myEl.store("background", myEl.getStyle("background"));
myEl.setHTML(myEl.retrieve("message")).setStyle("background", "green");
myEl.addEvents({
click: function() {
this.setHTML(this.retrieve("oldMessage")).setStyle("background", this.retrieve("background"));
}
});
<div id="myelement" class="foo">original message</div>
.foo {
background: red;
}