简单解决方案(参见
DEMO
):
<!DOCTYPE html>
<html>
<head>
<style>
#parent { height: 300px; width: 300px; border: 1px black solid; position: relative; left: 0; }
#images { height: 100px; width: 100px; background-color:orange; }
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script>
</head>
<body>
<div id="parent">
<div class="container">
<div id="images"></div>
</div>
</div>
<script>
$(document).ready(function() {
var
$document = $(document),
$parent = $("#parent"),
$container = $(".container", $parent),
offset = $container.offset(),
scrollbarSafety = 15; // use this to avoid dragging outside of window, thus creating scrollbars and wreaking all kinds of havoc on draggables containment checks
$container
.width($document.width() - offset.left - scrollbarSafety)
.height($document.height() - offset.top - scrollbarSafety);
$("#images")
.draggable(
{
containment: $container,
drag:
function(event, ui)
{
var
$draggee = $(this),
draggeePosition = $draggee.position(),
shouldWidth = draggeePosition.left + $draggee.width(),
shouldHeight = draggeePosition.top + $draggee.height();
if($parent.width() < shouldWidth)
{
$parent.width(shouldWidth);
}
if($parent.height() < shouldHeight)
{
$parent.height(shouldHeight);
}
}
}
);
});
</script>
</body>
</html>