您可以阅读有关处理这些 SO 问题的更多信息conditional revert
(here、here和here),但这足以保证它自己的问题。
基本上你想在你的对象上设置revert option
to ,如果它没有成功地放到一个 droppable 上,它会返回,像这样:'invalid'
.draggable()
$(".draggable").draggable({ revert: 'invalid' });
然后在您的中,.droppable()
您可以使用accept option
. Accept 可以实现为返回true
或false
基于是否接受元素的函数。我们的 droppable 声明将如下所示:
$(".droppable").droppable({
accept: function(drag) {
var dropId = $(this).attr('data-id');
var dragId = $(drag).attr('data-id');
return dropId === dragId;
}
});
在此示例中,我使用数据属性来匹配拖放元素,但您可以随心所欲地进行操作。这是一些示例HTML:
<div class="draggable" data-id='a'>draggable a</div>
<div class="droppable" data-id='a'>droppable a</div>
这是一个严肃的演示:
这是一个有趣的演示: