JSFiddle - React, Tailwind, and code Playground
HTML
<div class="draggable"></div>
<div id="droppable"></div>
<div id="block"></div>
CSS
#droppable {
border: 1px solid black;
background-color: green;
position: absolute;
top: 100px;
left: 200px;
height: 300px;
width: 300px;
}
.draggable {
border: 1px solid black;
background-color: blue;
position: absolute;
top: 10px;
left: 30px;
height: 30px;
width: 30px;
z-index: 20;
}
#block {
border: 1px solid black;
background-color: red;
position: absolute;
top: 200px;
height: 100px;
width: 100%;
z-index: 10;
}
JavaScript
$('#block').droppable({
accept: '.draggable',
drop: function (event, ui) {
if (ui.draggable.data('revert')) {
ui.draggable.data('revert', false);
var old = ui.draggable.draggable("option", "revert");
ui.draggable.draggable("option", "revert", true);
setTimeout(function () {
ui.draggable.draggable("option", "revert", old);
}, 100);
}
},
out: function (event) {
$('.draggable').data('revert', false);
},
over: function (event,ui) {
ui.draggable.data('revert', true);
}
});
$('#droppable').droppable({
accept: function (elem) {
if ($('.draggable').data('revert')) {
return false;
}
return elem.hasClass("draggable");
}
});
$('.draggable').draggable({
revert: 'invalid'
});