Сначала отключите все droppables, затем во время процедуры запуска перетаскивания сделайте $('.cell .validmove')
droppable и добавьте параметр revert: "invalid"
к перетаскиваемому элементу, чтобы он возвращался назад, когда не помещен в действительную ячейку, если это то, что выхочу.Между прочим, вам, вероятно, было бы лучше, если бы у вас была подпрограмма в событии drag()
под start()
и возвращаться к stop()
, так как событие drag()
срабатывает непрерывно по мере вашего движения.
unit.draggable({
start: function() {
startGrid.addClass("validmove").droppable("option", "disabled", false);
},
stop: function() {
startGrid.removeClass("validmove").droppable("option", "disabled", true);
},
cursor: "move",
revert: "invalid"
});
Если вы хотите, чтобы блок привязывался к сетке, либо укажите его в параметрах сетки / привязки в draggable()
, либо добавьте некоторый код в событие drop()
, чтобы анимировать блок на месте.
NB.CSS не работает должным образом в Chrome, сетка не отображается, отлично работает в Firefox.