I am trying to clone an element style object. This should allow me to reset the styles of the specified element after changing them.
For instance:
el.style.left;
At first I tried to copy it by assigning the variable the value el.style. Unfortunately, this points to this by reference, and any style changes are reflected in the cloned object.
My other attempt was to use the jQuery object extension method to create a copy as such:
var curr_style = $.extend( {}, el.style );
This does not work like curr_style.left etc. return undefined.
Any help would be appreciated!
I ended this to get each property: (based on @Raynos recommendations)
$.fn.getStyle = function(){ var style, el = this[0]; // Fallbacks for old browsers. if (window.getComputedStyle) { style = window.getComputedStyle( el ); } else if (el.currentStyle) { style = $.extend(true, {}, el.currentStyle); } else { style = $.extend(true, {}, el.style); } // Loop through styles and get each property. Add to object. var styles = {}; for( var i=0; i<style.length; i++){ styles[ style[i] ] = style[ style[i] ]; } return styles; };
source share