mirror of
https://github.com/jquery/jquery-ui.git
synced 2026-04-20 03:02:41 -04:00
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.
This commit is contained in:
@@ -128,6 +128,17 @@ test('of', function() {
|
||||
left: $(document).width() - 10
|
||||
}, 'document');
|
||||
|
||||
$('#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',
|
||||
@@ -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',
|
||||
|
||||
7
ui/jquery.ui.position.js
vendored
7
ui/jquery.ui.position.js
vendored
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user