我有一个运行良好的选择和拖动代码,直到在选择中添加一个位置相对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});
});
},
});
});
如果可以修复,请告诉我。 谢谢。
答案 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});