FullCalendar删除外部事件

时间:2012-06-22 14:54:22

标签: javascript fullcalendar

当我尝试从我的日历中删除外部事件时,如果我添加说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
        });
    });
});

2 个答案:

答案 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)
    {}
}
相关问题