aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2010-08-27 13:34:14 -0400
committerScott González <scott.gonzalez@gmail.com>2010-08-27 13:34:14 -0400
commit52a052be79d21aa519ccb513dc00a7c54868ef03 (patch)
treec583499b61a193602256bd160d7e4fb1ffacb2bf
parent2acfde9e5e411ece98bf7877212f0100d1c8c489 (diff)
downloadjquery-ui-52a052be79d21aa519ccb513dc00a7c54868ef03.tar.gz
jquery-ui-52a052be79d21aa519ccb513dc00a7c54868ef03.zip
Position: Handle $(document) and $(window) for the of option. Fixes #5963 - Position: option 'of' accepts jQuery object unless it wraps document. Fixes #5655 - (Possible) Typo in jquery.ui.position 1.8.1.
-rw-r--r--tests/unit/position/position_core.js22
-rw-r--r--ui/jquery.ui.position.js7
2 files changed, 26 insertions, 3 deletions
diff --git a/tests/unit/position/position_core.js b/tests/unit/position/position_core.js
index 3976e43ab..426231ee3 100644
--- a/tests/unit/position/position_core.js
+++ b/tests/unit/position/position_core.js
@@ -131,6 +131,17 @@ test('of', function() {
$('#elx').position({
my: 'right bottom',
at: 'right bottom',
+ of: $(document),
+ collision: 'none'
+ });
+ same($('#elx').offset(), {
+ top: $(document).height() - 10,
+ left: $(document).width() - 10
+ }, 'document');
+
+ $('#elx').position({
+ my: 'right bottom',
+ at: 'right bottom',
of: window,
collision: 'none'
});
@@ -139,6 +150,17 @@ test('of', function() {
left: $(window).width() - 10
}, 'window');
+ $('#elx').position({
+ my: 'right bottom',
+ at: 'right bottom',
+ of: $(window),
+ collision: 'none'
+ });
+ same($('#elx').offset(), {
+ top: $(window).height() - 10,
+ left: $(window).width() - 10
+ }, 'window');
+
$(window).scrollTop(500).scrollLeft(200);
$('#elx').position({
my: 'right bottom',
diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js
index dbe28ffa5..a14c5c612 100644
--- a/ui/jquery.ui.position.js
+++ b/ui/jquery.ui.position.js
@@ -26,21 +26,22 @@ $.fn.position = function( options ) {
options = $.extend( {}, options );
var target = $( options.of ),
+ targetElem = target[0],
collision = ( options.collision || "flip" ).split( " " ),
offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
targetWidth,
targetHeight,
basePosition;
- if ( options.of.nodeType === 9 ) {
+ if ( targetElem.nodeType === 9 ) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: 0, left: 0 };
- } else if ( options.of.scrollTo && options.of.document ) {
+ } else if ( targetElem.scrollTo && targetElem.document ) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if ( options.of.preventDefault ) {
+ } else if ( targetElem.preventDefault ) {
// force left top to allow flipping
options.at = "left top";
targetWidth = targetHeight = 0;