【问题标题】:Make jQuery-ui draggable handle cover entire page让jQuery-ui可拖动手柄覆盖整个页面
【发布时间】:2010-06-02 10:03:45
【问题描述】:

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

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

我尝试让body 可拖动,但没有奏效。

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

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

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

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

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

【问题讨论】:

    标签: jquery html jquery-ui draggable handle


    【解决方案1】:

    编辑:修改为包含从 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>
    

    【讨论】:

    • 谢谢,但我真的很想用 jquery-ui 来拖动 :(
    • 好吧,你可以这样做,但你必须自己改变 jquery ui 才能做到这一点。 draggable() 的行为并不像那样。
    • 我也不确定你会通过使用 jquery ui 获得什么。
    • 我肯定会考虑其他选项,但您不认为使用 jquery-ui 可以实现吗?它似乎只是工作,除了当我重置全屏容器时对象被移回其原始位置..jsfiddle.net/LUFf6
    • 我不知道我为什么要搞乱 jquery-ui,我应该只使用你漂亮的解决方案。谢谢!
    【解决方案2】:

    这实际上取决于您要达到的目标,因此我们需要了解更多。
    您可以在每个“放置”事件之后将可拖动的 div 移动到屏幕的左上角和全宽/高度吗?

    不过,我个人不会走“巨大容器”路线。

    【讨论】:

    • 我更新了我的问题。我会尝试你建议的重置全屏div。如果没有内置功能来实现它,这听起来像是我必须走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多