我做了这样的事情一次。我使用下面的代码来进行拖动。
$(".draggable").draggable({
containment: '#content',
cursor: 'move',
snap: '#dropSlots',
snapMode: "inner",
start: function(){
Positioning.initialize($(this));
},
stop: function() {
Positioning.reset($(this));
}
});
使用此:
var Positioning = (function() {
return {
//Initializes the starting coordinates of the object
initialize: function (object) {
if (object.data("dragged") != "1") {
object.data("dragged", "1");
object.data("originalLocation", $(this).originalPosition = {top:0,left:0});
}
},
//Resets the object to its starting coordinates
reset: function (object) {
if (object.data("dragged") == "1" && object.data("inDroppable") != "1"){
var OriginalLocationTop = object.data("originalLocation").top;
var OriginalLocationLeft = object.data("originalLocation").left;
$(object).animate({top: OriginalLocationTop, left: OriginalLocationLeft}, 1500);
}
},
};
})();
正如你可以看到它使用object.data("inDroppable")
这是当一个可拖动的是在可投放下降设置。
可放开代码:
$('.droppable').droppable({
drop: handleQuestionDrop,
out: handleQuestionMoveOut,
tolerance: "pointer"
});
这是通过以下两个功能:
function handleQuestionMoveOut(event, ui) {
$(ui.draggable).data("inDroppable", "0");
// A lot of other project related stuff, deleted...
}
function handleQuestionDrop(event, ui) {
// position draggable directly on top of the slot
ui.draggable.position({
my: 'left top',
at: 'left top',
of: $(this),
using: function(css, calc) {
ui.draggable.animate(css, 250, "linear");
}
});
$(ui.draggable).data("inDroppable", "1");
}
正如你可以看到这是一个很大的代码,我已经删除了所有不相关的代码。 那么,这代码实现如下:
- 给你的拖拽元素“起始坐标”上拖动首次。
- 停止拖动这些可拖动块时,检查它们是否落在拖放点中。
- 如果他们这样做,将其放置在插槽顶部。
- 如果他们没有,他们位置上的原始坐标的顶部
随意问任何问题;)