使jQuery-ui可拖动手柄覆盖整个页面

时间:2010-06-02 10:03:46

标签: jquery html jquery-ui draggable handle

单击窗口中的任何位置时,使元素可拖动的最佳方法是什么?

我是否必须使用覆盖整个窗口的容器<div>

我尝试使body可拖动,但这不起作用。

使用容器<div>的问题在于它移动后因此在拖动后不再覆盖整个屏幕。

如何制作一个非常大的容器<div>,它可以在每个方向上跨越大量像素,这样你就永远无法到达它的边缘。这是个坏主意吗?

这个想法(简化)是让一个中间有正方形的页面可以通过拖动窗口的任何部分来拖动。

这是一个非常不必要的模型:)

alt text http://i49.tinypic.com/2ni4lqx.png

我正在尝试使用全屏div,但是当我重置它时,其中的元素会随之移动.. http://jsfiddle.net/LUFf6/

2 个答案:

答案 0 :(得分:2)

编辑:修改为包括div的鼠标偏移。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>
function doMove(e) {
  var $d = $('#myDiv');
  var off = $d.offset();
  var left = e.pageX + $d.data('left');
  var top = e.pageY + $d.data('top');
  $d.offset({left: left, top: top});
};
$(function() {
  $(document).mousedown(function(e) {
     var $d = $('#myDiv');
     var off = $d.offset();
     $d.data('left',off.left - e.pageX);
     $d.data('top',off.top - e.pageY);     
     $(document).bind('mousemove', doMove);
  }).mouseup(function(e) {
     $(document).unbind('mousemove',doMove);
  });
});
</script>
<style>
div#myDiv {
  width: 50px;
  height: 50px;
  background-color: red;
  position: absolute;
  top: 100px;
  left: 100px;
}
</style>
<div id="myDiv"></div>

答案 1 :(得分:1)

这实际上取决于你想要达到的目标,所以我们需要更多地了解它们 您可以在每次“drop”事件后将可拖动的div移动到屏幕的左上角和全宽/高度?

我个人不会走这条“巨大的集装箱”路线。