У меня проблема, которая лучше всего иллюстрируется этой скрипкой, на которую я наткнулся:
Это, когда я перетаскиваю объект и нависаю над его отбрасываемой копией, падение обнаруживается EVEN, если между ними есть div. Я хочу избежать этого.
Из того, что я понял, прочитав документы, для этого не существует готового решения, но, возможно, вариант может состоять в том, чтобы получить "реальный" верхний div, в котором удаленный элемент был удален, и избежать действия, если это переполненный div. (Это всего лишь идея).
Другими словами, скажем, у меня есть droppable div, называемый droppable-div, div, который над ним называется on-top-non-droppable-div... могу ли я обнаружить это в функции сброса?
dropped: function(ev, ui){
// somehow detect if the first target to receive the draggable event
// is #on-top-non-droppable-div, and don't do anything if it is.
}
Возможно, это соответствует вашим потребностям:
$(function () {
$('.drag').draggable();
$('.drop, .overlay').droppable({
tolerance: 'touch',
hoverClass: 'drop-hover',
accept: '.drag',
drop: function (event, ui) {
if ($(this).hasClass('overlay')) {
ui.draggable.draggable({
revert: true
});
} else {
ui.draggable.draggable({
revert: "invalid"
});
}
}
});
});
Здесь пример установки tolerance: 'pointer',
document.elementFromPoint
, это чтобы дать вам идею: jsfiddle.net/JSFU4/10 Но тогда поведение может быть не совсем то, что вы ожидаете. В любом случае, установка плагина droppable в .overlay не должна быть проблемой, даже если есть много элементов.