2013-01-16 30 views
0

我想要從fullCalender中刪除事件,並且面臨從日曆中移除元素的問題。

當我把 current.remove();是確認刪除處理的條件之前,鐵鍋良好,該事件被刪除,但在成功的方法撐船時,它不會影響元素,甚至我兌現$(this)選擇!

$('#calendar').fullCalendar({ 
     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month' 
     }, 

     editable: true, 
     droppable: true, // this allows things to be dropped onto the calendar ! 
     events : url+"CalEvent", 
     drop: function(date, allDay) { // this function is called when something is dropped 

      // retrieve the dropped element's stored Event Object 
      var originalEventObject = $(this).data('eventObject'); 

      // we need to copy it, so that multiple events don't have a reference to the same object 
      var copiedEventObject = $.extend({}, originalEventObject); 

      // assign it the date that was reported 
      copiedEventObject.start = date; 
      copiedEventObject.allDay = allDay; 

      //save event to db 
      jQuery.ajax({ 
       url: url+"addCalEvent", 
       type: "POST", 
       dataType: 'JSON', 
       data:{ 
        'eventObj':copiedEventObject 
       }, 

       error: function (request, status, error) { 
        alert('خطأ في إضافة الحدث '); 
        revertFunc(); 
       } 
      }); 

      // render the event on the calendar 
      // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) 
      $('#calendar').fullCalendar('renderEvent', copiedEventObject, true); 

      // is the "remove after drop" checkbox checked? 
      if ($('#drop-remove').is(':checked')) { 
       // if so, remove the element from the "Draggable Events" list 
       $(this).remove(); 
      } 

     } , 
////////////////////////////////////////////////////// 
// here is the problem I face with deleting the event //// 
     eventClick: function(event, element) { 

     var current = $(this); 

    if(confirm('هل متأكد من حذف الحدث')){ 
       jQuery.ajax({ 
        url: url+"delCalEvent", 
        type: "POST", 
        dataType: 'JSON', 
        data:{ 
         'eventId':event.id 
        }, 
        success:function(){ 

         current.remove(); 
         $('#calendar').fullCalendar('updateEvent', event); 
        }, 
        error: function (request, status, error) { 
         alert('خطأ في حذف الحدث '); 
         revertFunc(); 
        } 
       }); 


      } 

     }, 

     eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) { 
      //check for changes 
      if (!confirm("هل أنت متأكد من تغيير موعد الحدث ؟")) { 
       revertFunc(); 
      }else{ 
       //update current event 
       jQuery.ajax({ 
        url: url+"updateCalEvent", 
        type: "POST", 
        dataType: 'JSON', 
        data:{ 
         'eventObj':event 
        }, 

        error: function (request, status, error) { 
         alert('خطأ في تعديل الحدث '); 
         revertFunc(); 
        } 
       }); 
      } 





     } 


    }); 
+0

你能創建一個簡短的,自包含的,完整的例子嗎?根據你所顯示的代碼,'current'不應該在'success'中工作。 **有一個原因,如果你不使用'current'變量,而是在'success'內使用'$(this)'而不是'this this'有不同的含義。你確定你已經用'current'測試了這個版本嗎? –

+0

是的,我正在測試版本current變量引用$(this)選擇器,js代碼很大,但我會把它放在問題 – palAlaa

+0

@ T.J。 Crowde請查看編輯的代碼 – palAlaa

回答

0

而不是使用JQuery remove()updateEvent,您可以使用fullCalendar removeEvents刪除事件:

eventClick: function(event, element) { 

    var current = event; 

    if(confirm('هل متأكد من حذف الحدث')){ 
      jQuery.ajax({ 
       url: url+"delCalEvent", 
       type: "POST", 
       dataType: 'JSON', 
       data:{ 
        'eventId':event.id 
       }, 
       success:function(){ 
        $('#calendar').fullCalendar('removeEvents', current.id); 
       }, 
       error: function (request, status, error) { 
        alert('خطأ في حذف الحدث '); 
        revertFunc(); 
       } 
      }); 
     } 
    }, 
+0

當我指定要刪除的event.id時,它會很好地工作,如下所示: $('#calendar')。fullCalendar('removeEvents',event.id); 謝謝 – palAlaa

相關問題