0

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

2 回答 2

0

event.id您的函数中的drop不引用 FullCalendar 事件。它指的是刚刚触发的 drop 事件。

您将需要使用ui.draggable来访问您的可拖动对象 - 在本例中为 FullCalendar 事件。

希望这可以帮助!很酷的概念顺便说一句!

更新:检查这个小提琴的概念证明

于 2012-06-22T19:33:34.723 回答
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)
    {}
}
于 2012-07-02T11:01:04.723 回答