我會建議,當切換回到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