Fullcalendar 更改假期的背景颜色
Fullcalendar change background color for holidays
实际上我使用这段代码为假期设置红色背景:
dayRender: function (dayRenderInfo) {
var date = dayRenderInfo.date;
var datestring = date.getFullYear() + "-" + ("0"+(date.getMonth()+1)).slice(-2) + "-" + ("0" + date.getDate()).slice(-2);
var cell = dayRenderInfo.el;
var array_holidays = []
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/get-holidays.php",
data: { "anno" : date.getFullYear() },
success: function(data, status) {
array_holidays = data;
}
});
$.each( array_holidays , function( key, value ) {
if ( datestring == value) {
$(cell).css("background-color", "red");
}
});
},
我需要一个脚本,因为一些假期,例如复活节,每年都会更改日期。所以,get-holidays.php,根据日历中实际显示的年份给我一组假期。
效果很好,但由于性能原因,dayRender 在月视图中调用了 30-31 次!!!
任何获得更好性能的建议?
针对此要求的更好的整体解决方案是为这些假期创建一个单独的 event source,其事件都设置了 rendering: "background"
选项。此选项将使事件简单地在其涵盖的时间段的背景中着色,而不是以正常方式显示为粗体、标记的事件。您当然也可以通过事件的属性来控制颜色。
参见https://fullcalendar.io/docs/background-events for details of background events. There's also a demo here。
你可以很容易地做到这一点。只需在您的资源或事件数组列表中定义 'color'=>''
。
$events[] = array(
'---' => '---',
'----'=> '----',
'color' => $color, // optional ( it will work for Border Color or Background Color )
// 'className'=> '' // optional for give specific css
);
无需更改任何 JS 代码...
检查这张图片..
实际上我使用这段代码为假期设置红色背景:
dayRender: function (dayRenderInfo) {
var date = dayRenderInfo.date;
var datestring = date.getFullYear() + "-" + ("0"+(date.getMonth()+1)).slice(-2) + "-" + ("0" + date.getDate()).slice(-2);
var cell = dayRenderInfo.el;
var array_holidays = []
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/get-holidays.php",
data: { "anno" : date.getFullYear() },
success: function(data, status) {
array_holidays = data;
}
});
$.each( array_holidays , function( key, value ) {
if ( datestring == value) {
$(cell).css("background-color", "red");
}
});
},
我需要一个脚本,因为一些假期,例如复活节,每年都会更改日期。所以,get-holidays.php,根据日历中实际显示的年份给我一组假期。
效果很好,但由于性能原因,dayRender 在月视图中调用了 30-31 次!!!
任何获得更好性能的建议?
针对此要求的更好的整体解决方案是为这些假期创建一个单独的 event source,其事件都设置了 rendering: "background"
选项。此选项将使事件简单地在其涵盖的时间段的背景中着色,而不是以正常方式显示为粗体、标记的事件。您当然也可以通过事件的属性来控制颜色。
参见https://fullcalendar.io/docs/background-events for details of background events. There's also a demo here。
你可以很容易地做到这一点。只需在您的资源或事件数组列表中定义 'color'=>''
。
$events[] = array(
'---' => '---',
'----'=> '----',
'color' => $color, // optional ( it will work for Border Color or Background Color )
// 'className'=> '' // optional for give specific css
);
无需更改任何 JS 代码... 检查这张图片..