diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-04-12 18:33:31 +0200 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-04-12 18:33:31 +0200 |
commit | 59b93a7dacc7a02267ffdda4cd5ac603c361d197 (patch) | |
tree | 2d704281b514a92645abeedea142331a6cb19ad4 /ui | |
parent | 8c76fe38bf1012c758bbb0bd7ae04ead4edca906 (diff) | |
download | jquery-ui-59b93a7dacc7a02267ffdda4cd5ac603c361d197.tar.gz jquery-ui-59b93a7dacc7a02267ffdda4cd5ac603c361d197.zip |
Position: Refactor within-data to avoid calculating that more then needed. Not quite done, but good enough for now
Diffstat (limited to 'ui')
-rw-r--r-- | ui/jquery.ui.position.js | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index 27493703d..a2aa59d4f 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -70,8 +70,17 @@ $.fn.position = function( options ) { options = $.extend( {}, options ); var target = $( options.of ), - within = $( options.within || window ), - scrollInfo = $.position.getScrollInfo( within ), + withinElement = $( options.within || window ), + isWindow = $.isWindow( withinElement[0] ), + withinOffset = withinElement.offset(), + within = { + element: withinElement, + left: isWindow ? withinElement.scrollLeft() : withinOffset.left, + top: isWindow ? withinElement.scrollTop() : withinOffset.top, + width: isWindow ? withinElement.width() : withinElement.outerWidth(), + height: isWindow ? withinElement.height() : withinElement.outerHeight() + }, + scrollInfo = $.position.getScrollInfo( withinElement ), targetElem = target[0], collision = ( options.collision || "flip" ).split( " " ), offsets = {}, @@ -253,11 +262,8 @@ $.fn.position = function( options ) { $.ui.position = { fit: { left: function( position, data ) { - var within = data.within, - win = $( window ), - isWindow = $.isWindow( data.within[0] ), - withinOffset = isWindow ? win.scrollLeft() : within.offset().left, - outerWidth = isWindow ? win.width() : within.outerWidth(), + var withinOffset = data.within.left, + outerWidth = data.within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, @@ -293,11 +299,8 @@ $.ui.position = { } }, top: function( position, data ) { - var within = data.within, - win = $( window ), - isWindow = $.isWindow( data.within[0] ), - withinOffset = isWindow ? win.scrollTop() : within.offset().top, - outerHeight = isWindow ? win.height() : within.outerHeight(), + var withinOffset = data.within.top, + outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, @@ -339,11 +342,11 @@ $.ui.position = { return; } - var within = data.within, - win = $( window ), - isWindow = $.isWindow( data.within[0] ), + // TODO refactor the offset/scrollLeft calls + var within = data.within.element, + isWindow = $.isWindow( within[0] ), withinOffset = ( isWindow ? 0 : within.offset().left ) + within.scrollLeft(), - outerWidth = isWindow ? within.width() : within.outerWidth(), + outerWidth = data.within.width, offsetLeft = isWindow ? 0 : within.offset().left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, @@ -379,11 +382,11 @@ $.ui.position = { return; } - var within = data.within, - win = $( window ), - isWindow = $.isWindow( data.within[0] ), + // TODO refactor the offset/scrollLeft calls + var within = data.within.element, + isWindow = $.isWindow( within[0] ), withinOffset = ( isWindow ? 0 : within.offset().top ) + within.scrollTop(), - outerHeight = isWindow ? within.height() : within.outerHeight(), + outerHeight = data.within.height, offsetTop = isWindow ? 0 : within.offset().top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, |