Прошло много времени с тех пор, как я использовал fullcalendar, но если я правильно помню, ui
дает вам доступ к самому элементу, который перетаскивается, правильно?Если это так, вы можете получить координаты перетаскиваемого элемента и координаты удаляемого элемента div и проверить, находятся ли они внутри друг друга.
jQuery предоставляет доступ к координатам относительно страницы через .offset()
,Координаты дают только top
и left
, однако правое и нижнее можно вычислить, используя высоту и ширину элемента.
(не проверено, но общая идея)
var isElemOverDiv = function(draggedItem, dropArea) {
// Prep coords for our two elements
var a = $(draggedItem).offset();
a.right = $(draggedItem).outerWidth() + a.left;
a.bottom = $(draggedItem).outerHeight() + a.top;
var b = $(dropArea).offset();
a.right = $(dropArea).outerWidth() + b.left;
a.bottom = $(dropArea).outerHeight() + b.top;
// Compare
if (a.left >= b.left
&& a.top >= b.top
&& a.right <= b.right
&& a.bottom <= b.bottom) { return true; }
return false;
}
eventDragStop: function(event, jsEvent, ui, view) {
if (isElemOverDiv(ui, $('div.event-delete'))) {
calendar.fullCalendar('removeEvents', event.id);
}
}
Одинхитрая часть здесь isElemOverDiv(ui, ...
.Я не помню, каково значение ui
.Возможно, вам придется изменить это на что-то вроде ui.element
, чтобы получить фактическую ссылку на элемент.