jQuery选择并拖动具有相对和绝对位置的元素

时间:2010-02-18 10:15:16

标签: jquery drag-and-drop

我有一个运行良好的选择和拖动代码,直到在选择中添加一个位置相对div。

以下是代码,您可以在http://jsbin.com/azeli/2查看工作演示 要查看问题只需鼠标选择 span 1 span 2 和嵌套的 span 4

$(function() {

  var selected = $([]), offset = {top:0, left:0};
  $("#selectable1").selectable();

    $("#selectable1 span.drag").draggable({

        start: function(ev, ui) {

        selected = $(".ui-selected").each(function() {
        var el = $(this);
        el.data("offset", el.offset());

        });

        offset = $(this).offset();

      },

      drag: function(ev, ui) {

        var dt = ui.position.top - offset.top, dl = ui.position.left - offset.left;

        selected.not(this).each(function() {
          var el = $(this), off = el.data("offset");
          el.css({top: off.top + dt, left: off.left + dl});
          });

      },  

  });
  });

如果可以修复,请告诉我。 谢谢。

1 个答案:

答案 0 :(得分:0)

使选区内所有元素的位置成为绝对位置,在选区更改时恢复原始位置。

在循环之外

var originalPositions = new Array();
循环内的

// call the restorePositions() that goes through the array of 
// saved elements, restoring each position and remove the element from the array;
// if element in the loop has a position thats not relative, add to array
el.css({position: 'absolute', top: off.top + dt, left: off.left + dl});