我会建议,当切换回到1,20时,您将可拖动的可拖动对象移动到要使用模分割的网格中的坐标。例如:(currentX - gridOriginX)%cellWidth,(currentY - gridOriginY)%cellHeight。
在下面的示例中,我只是使用可拖动元素的原始位置来确定网格应为的位置。我也使用可拖动的“over”事件来代替“drag”事件。
HTML:
<div id="thing">
<div id="draggable5" class="draggable ui-widget-content">
<p>Drag Me</p>
</div>
</div>
<div id="thing2">
</div>
CSS:
#draggable5 {
width: 100px;
height: 100px;
border: 1px solid #999;
}
#thing {
height: 150px;
border: 1px solid #900;
}
#thing2 {
height: 150px;
border: 1px solid #00F;
}
的Javascript:
$(document).ready(function() {
var obj = $("#draggable5");
obj.draggable({
grid: [ 1, 20 ],
}).data("init", obj.offset());
$("#thing").droppable({
over: function(e, ui) {
obj = ui.draggable;
var init = obj.data("init");
var here = obj.offset();
here.top = init.top + Math.floor((here.top - init.top)/20) * 20;
here.left = init.left + Math.floor((here.left - init.left)/1) * 1;
obj.offset(here);
obj.draggable("option", "grid", [ 1, 20 ]);
}
});
$("#thing2").droppable({
over: function(e, ui) {
obj = ui.draggable;
obj.draggable("option", "grid", [ 1, 1 ]);
}
});
});
小提琴:http://jsfiddle.net/qaqDz/3/
您可以发布[的jsfiddle(HTTP://的jsfiddle 。净)? – apaul 2013-05-13 01:22:19
当拖动开始时,您可以查看[drag start event](http://api.jqueryui.com/draggable/#event-start)将元素移动到网格上。 – 2013-05-13 15:38:48
http://jsfiddle.net/ECyUa/1/ – 2013-05-18 17:46:46