当我尝试从我的日历中删除外部事件时,如果我添加说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
});
});
});
答案 0 :(得分:0)
event.id
函数中的drop
未引用FullCalendar事件。它指的是刚触发的掉落事件。
您需要使用ui.draggable
来访问您的可拖动对象 - 在本例中为FullCalendar事件。
希望这有帮助!酷概念BTW!
更新 :查看此fiddle以获取概念验证
答案 1 :(得分:0)
对于处境相同的人,..
eventDragStop: function(event, jsEvent, ui, view) {
if (x) {
$('#calendar').fullCalendar('removeEvents', event._id);
}
请注意我正在使用event._id,x是检查项目被拖动到哪个div返回true或false的结果。检查事件正在被丢弃的div。我还必须更改fullcalendar.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)
{}
}