0

カレンダーから外部イベントを削除しようとしているときに、たとえば 3 つの外部イベントを追加してから 1 つをビンにドラッグすると、1 つのイベントだけを削除するのではなく、すべてのイベントが削除されます (別のフィードからのイベントも削除されます)。 .

これがなぜなのか、それを修正する方法はありますか?コードは次のとおりです。

$(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

同じ境遇の方に..

 eventDragStop: function(event, jsEvent, ui, view) {

                 if (x) {
                    $('#calendar').fullCalendar('removeEvents', event._id);
                      }

私は event._id を使用していることに注意してください。x は、アイテムがどの div にドラッグされたかを確認した結果であり、true または false を返します。イベントがドロップされている div をチェックします。また、関数 eachEventElement の fullcalendar.js の一部のコードを変更する必要があり、上記のコードで問題が発生していたので、それも変更しました。

 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 に答える
0

関数のevent.iddropFullCalendar イベントを参照していません。これは、トリガーされたばかりのドロップ イベントを指します。

ドラッグ可能なものにアクセスするには、 を使用する必要がありui.draggableます - この場合は FullCalendar イベントです。

お役に立てれば!ところでクールなコンセプト!

更新:概念実証については、このフィドルを確認してください

于 2012-06-22T19:33:34.723 に答える