We’re using jQuery for one of our current projects. Today I found myself in an IE situation that could be solved by using the prototype librarie’s absolutize method. I couldn’t find any equivilent implementation that I liked in jQuery so I went ahead and ported absolutize from prototype to jquery.
It can be used in the standard jQuery way, like so:
$('some-selector').absolutize()
Here’s the code:
jQuery.fn.absolutize = function()
{
return this.each(function()
{
var element = jQuery(this);
if (element.css('position') == 'absolute')
{
return element;
}
var offsets = element.offset();
var top = offsets.top;
var left = offsets.left;
var width = element[0].clientWidth;
var height = element[0].clientHeight;
element._originalLeft = left - parseFloat(element.css("left") || 0);
element._originalTop = top - parseFloat(element.css("top") || 0);
element._originalWidth = element.css("width");
element._originalHeight = element.css("height");
element.css("position", "absolute");
element.css("top", top + 'px');
element.css("left", left + 'px');
element.css("width", width + 'px');
element.css("height", height + 'px');
return element;
});
}