r2802 - + Verified that absolutely positioning now works in IE 8 / Chrome 1 / Firefox 3 without t...

r2802 - + Verified that absolutely positioning now works in IE 8 / Chrome 1 / Firefox 3 without t...


Author: vtGavin
Date: Wed Jun 17 05:58:09 2009
New Revision: 2802
Modified:
branches/dev/positionTo/ui/utils.positionTo.js
Log:
+ Verified that absolutely positioning now works in IE 8 / Chrome 1 /
Firefox 3 without the need for margin calculation and tweaking!
Modified: branches/dev/positionTo/ui/utils.positionTo.js
==============================================================================
--- branches/dev/positionTo/ui/utils.positionTo.js    (original)
+++ branches/dev/positionTo/ui/utils.positionTo.js    Wed Jun 17 05:58:09 2009
@@ -25,20 +25,26 @@
console.log('mouse move detected');
}
};
-
+
var $parentElem = $(parentElem),
- parentPosition = $parentElem.position(),
- // calculate parent element coordinates and pad accordingly for
any border styling
- parentElem_coords = {
- left: parentPosition.left
-         + parseInt($parentElem.css('margin-left').replace(/px/, '')),
- right: parentPosition.left + $parentElem.outerWidth()
- -
parseInt($parentElem.css('margin-right').replace(/px/, '')),
- top: parentPosition.top
-         + parseInt($parentElem.css('margin-top').replace(/px/, '')),
- bottom: parentPosition.top + $parentElem.outerHeight()
-         -
parseInt($parentElem.css('margin-bottom').replace(/px/, ''))
+ parentPosition = $parentElem.offset();
+
+ if ($parentElem.parent().length)
+ {
+ grandParentPosition = $(parentElem).parent().offset();
+ parentPosition = {
+ top: parentPosition.top - grandParentPosition.top,
+ left: parentPosition.left - grandParentPosition.left
};
+ }
+
+ // calculate parent element coordinates and pad accordingly for any
border styling
+ var parentElem_coords = {
+ left: parentPosition.left,
+ right: parentPosition.left + $parentElem.outerWidth(),
+ top: parentPosition.top,
+ bottom: parentPosition.top + $parentElem.outerHeight()
+ };
this.data('positionTo_uniqueNodeID', {
    elem_originalParent: (this.parent().length ? this.parent()[0] :
false),
@@ -65,6 +71,15 @@
// prep this element for being positioned
this.css('display', 'block')
.css('position', 'absolute');
+
+ /*
+ alert('parentElem_coords.right = ' + parentElem_coords.right
+ + ', parentElem_coords.top = ' + parentElem_coords.top
+ + ', $parentElem.outerWidth() = ' + $parentElem.outerWidth()
+ + ', $parentElem.outerHeight() = ' + $parentElem.outerHeight()
+ + ', margin-right px = ' +
parseInt($parentElem.css('margin-right').replace(/px/, ''))
+ + ', margin-top px = ' +
parseInt($parentElem.css('margin-top').replace(/px/, '')));
+ */
// !!! arbitrarily position the element
this.css('left', parentElem_coords.right + 'px')