当我尝试从日历中删除外部事件时,如果我添加 3 个外部事件,则将一个拖到垃圾箱中,而不是只删除一个事件,它会删除所有事件(甚至是我正在做的单独提要中的事件。
知道为什么会这样以及如何解决吗?这是代码:
$(document).ready(function () {
//listens for drop event
$("#calendarTrash").droppable({
tolerance: 'pointer',
drop: function (event, ui) {
var answer = confirm("Delete Event?")
if (answer) {
$('#calendar').fullCalendar('removeEvents', event.id);
}
}
});
/* initialize the external events ------------*/
$('#external-events div.external-event').each(function () {
// create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
// it doesn't need to have a start or end
var eventObject = {
title: $.trim($(this).text()) // use the element's text as the event title
};
// store the Event Object in the DOM element so we can get to it later
$(this).data('eventObject', eventObject);
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 // original position after the drag
});
});
});
drop
函数中的event.id
不引用 FullCalendar 事件。它是指刚刚触发的丢弃事件。
您将需要使用ui.draggable
来访问可拖动对象 - 在本例中为FullCalendar事件。
希望这有帮助!很酷的概念顺便说一句!
更新 :检查此小提琴以进行概念验证
适用于处于相同情况的任何人,..
eventDragStop: function(event, jsEvent, ui, view) {
if (x) {
$('#calendar').fullCalendar('removeEvents', event._id);
}
请注意,我使用的是event._id,x 是检查项目被拖动到哪个div 返回 true 或 false 的结果。 检查事件被放入哪个div。我还必须在全日历中更改一些代码.js 函数 eachEventElement 导致我的上述代码出现问题,所以我也更改了它。
function eachEventElement(event, exceptElement, funcName) {
try{
var elements = eventElementsByID[event._id],
i, len = elements.length;
for (i=0; i<len; i++) {
if (!exceptElement || elements[i][0] != exceptElement[0]) {
elements[i][funcName]();
}
}
}
catch(err)
{}
}