2013-03-16 117 views
4

我想根據用戶選擇在fullcalendar上選擇事件。 示例:如果用戶選擇A類 - 那麼具有相同ID的所有類都將變爲綠色(使用應用的className)。fullCalendar添加一個類到事件

我很難將類應用於其他事件,我可以通過ID成功選擇。我想我的問題是將事件對象與jQuery對象相結合。

示例代碼:

 .... 
     eventClick: function(event) { 
      $(this).addClass("reg_selected"); //this works fine on selected event 
      var selectedID = event.id 
      alert(selectedID);     //get event.ID, and use it to find similar ones. 
      var similarEvents = $("#calendar").fullCalendar('clientEvents',selectedID).addClass("reg_selected"); 
      ... 

我得到的錯誤是:

addClass is not a function 

什麼想法?

謝謝!

編輯:我也嘗試循環的方法中,並得到了同樣的錯誤:

  for (var i = 0; similarEvents.length > i ; i++){ 
       alert(similarEvents[i].title); 
       similarEvents[i].className("reg_selected"); 
      } 

警報()工作,但類名()中產生的相同的錯誤如上

回答

1

clientEvents返回匹配對象的數組。你需要遍歷數組(在你的情況類似的事件),並調用addClass爲每個項目

更新: 也有問題使用id來更新多個事件,使用過濾器功能,而不是一個更好的方式去。

eventClick: function(event) { 
    var similarEvents = $("#calendar").fullCalendar('clientEvents', function(e) { return e.test === event.test }); 

    for (var i = 0; similarEvents.length > i ; i++){ 
      similarEvents[i].className = 'reg_selected'; 
      $('#calendar').fullCalendar('updateEvent', similarEvents[i]); 
     } 
}, 

jsfiddle

+0

非常感謝 - 我剛剛更新了一些代碼,我以前試過的問題,得到同樣的錯誤。感謝您的幫助! – kneidels 2013-03-20 20:29:53

+1

className是一個屬性而不是方法。嘗試'similarEvents [i] .className =「reg_selected」;' – tocallaghan 2013-03-20 22:49:35

+0

否,'similarEvents [i] .className =「reg_selected」;'似乎沒有工作。沒有錯誤 - 但它沒有工作。 – kneidels 2013-03-21 07:48:23

3

對於fullcalendar添加事件類,ID和標題看到這一點。

if($('#eventTitle').val() == "Avilable") { 
    eventClass = "avilable"; 
}else { 
    eventClass = "unavilable"; 
} 

$myCalendar.fullCalendar('renderEvent', { 
    id:response, 
    title: title.val(), 
    start: start.val(), 
    end: end.val(), 
    allDay: true, 
    className: eventClass, 
    color: color 
    }, true 
); 
2

這個答案非常類似的情況,但是當事件類與往返在DB或檢查可能持續事件源選擇。

類名稱可以在事件對象在源規定如下(開始和結束只給出的上下文中):

[{ 
    ... 
    "className": "selected-event", 
    "start": '2017-05-01T08:30:00.0', 
    "ends": '2017-05-01T09:00:00.0', 
    ... 
}, ...] 

的想法是,用戶點擊事件; ajax調用來選擇事件到後端; onsuccess,前端JavaScript做了$calendar.fullCalendar('rerenderEvents');並接收事件源與事件的類。 .fc-event-container的直系孩子在上面的示例中得到指定的班級 - selected-event

因此,選擇可以保留在後端。