Fixed an issue with setting offset of absolutely positioned element that has no position values ("auto"). Fixes #5781.
This commit is contained in:
parent
08cf82e88e
commit
656fe92178
3 changed files with 29 additions and 9 deletions
|
@ -150,15 +150,27 @@ jQuery.offset = {
|
|||
},
|
||||
|
||||
setOffset: function( elem, options, i ) {
|
||||
var position = jQuery.curCSS( elem, "position" );
|
||||
|
||||
// set position first, in-case top/left are set even on static elem
|
||||
if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
|
||||
if ( position === "static" ) {
|
||||
elem.style.position = "relative";
|
||||
}
|
||||
var curElem = jQuery( elem ),
|
||||
curOffset = curElem.offset(),
|
||||
curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
|
||||
curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0,
|
||||
props = {};
|
||||
|
||||
var curElem = jQuery( elem ),
|
||||
curOffset = curElem.offset(),
|
||||
curCSSTop = jQuery.curCSS( elem, "top", true ),
|
||||
curCSSLeft = jQuery.curCSS( elem, "left", true ),
|
||||
calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
|
||||
props = {}, curPosition = {}, curTop, curLeft;
|
||||
|
||||
// need to be able to calculate position if either top or left is auto and position is absolute
|
||||
if ( calculatePosition ) {
|
||||
curPosition = curElem.position();
|
||||
}
|
||||
|
||||
curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
|
||||
curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
|
||||
|
||||
if ( jQuery.isFunction( options ) ) {
|
||||
options = options.call( elem, i, curOffset );
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue