我正在通过执行以下操作来更改FullCalendar(http://arshaw.com/fullcalendar/docs/event_data/)中的事件:
eventClick: function (event)
{
if ($(this).css('background-color').match(/^(?:green|#fff(?:fff)?|rgba?(s*0s*,s*255s*,s*0s*(?:,s*1s*)?))$/i)) {
$(this).css('border-color', 'red');
$(this).css('backgroundColor', 'red');
}
else if ($(this).css('background-color').match(/^(?:red|#fff(?:fff)?|rgba?(s*255s*,s*0s*,s*0s*(?:,s*1s*)?))$/i)) {
$(this).css('border-color', 'blue');
$(this).css('backgroundColor', 'blue');
}
}
但我发现,一旦我更改了一个事件颜色(甚至几个事件颜色),然后将一个事件拖到另一天,所有事件的颜色都会变回原来的颜色。
我怎样才能防止这种情况???如何使 evet 在更改后保持其颜色?
使用这个:
eventClick: function (event)
{
if ($(this).css('background-color').match(/^(?:green|#fff(?:fff)?|rgba?(s*0s*,s*255s*,s*0s*(?:,s*1s*)?))$/i)) {
event.color = 'red';
event.borderColor = 'red';
}
else if ($(this).css('background-color').match(/^(?:red|#fff(?:fff)?|rgba?(s*255s*,s*0s*,s*0s*(?:,s*1s*)?))$/i)) {
event.color = 'blue';
event.borderColor = 'blue';
}
calendar.fullCalendar('renderEvent',event ,true);
}
Se 单个事件中的颜色,而不是全局颜色;然后在单击事件中更新事件元素和完整日历视图。
示例代码:
$('#mycalendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
eventSources: [{
events: [{
title: 'Event1',
color: 'green',
start: '2014-04-05'
}, {
title: 'Event2',
color: 'green',
start: '2014-04-19'
}],
textColor: 'black'
}],
eventClick: function (calEvent, jsEvent, view) {
calEvent.color = 'red';
$('#mycalendar').fullCalendar('updateEvent', calEvent);
}
});
演示:http://jsfiddle.net/IrvinDominin/6Ffsy/