ここをクリックしてください。基本的には、何かをドラッグし始めると、その位置がキャッシュされます。次に、あなたがドロップ可能な状態になったら、ドロップ可能位置を開始位置にスワップし、ドラッグ可能な開始位置を更新し、基になるドロップ可能なデータ構造を更新してオフセットとして修正します。ここjsfiddleです:http://jsfiddle.net/fordlover49/BwvK4/
$(function() {
$(".ui-widget-content").draggable({
grid: [5, 5],
start: function(event, ui) {
// cache the position we were at when we started dragging.
$(this).data("startPos", ui.position);
},
stack: ".ui-widget-content"
});
$(".ui-widget-content").droppable({
tolerance: 'intersect',
over: function(event, ui) {
var offset = $(ui.draggable).data("startPos");
// update draggable's cached position to what the droppable was
$(ui.draggable).data("startPos", {
top: $(this).position().top,
left: offset.left});
// swap droppable positions with dragging's original pos.
$(this).css("top", offset.top);
// clear the over events, and update the droppable's offset.
$(this).data("droppable").isout = 1;
$(this).data("droppable").isover = 0;
$(this).data("droppable").offset = $(this).offset();
}
});
});
それはそれは一度だけ発動ボックスが_over_別であるが、それは一度発動ことはありません。それを完全に外して戻すと、再び発火します。おそらく、あなたはオーバーイベントをキャプチャし、マウスイベントをキャプチャしたいのですか? – tjarratt
私はそれを上に行くときにボックスが動くと思う、まだマウスを押さえながら、それはまだボックスが動いていないと思う。とにかくこれを修正するには? – David