我想知道是否有一种方法可以使用完整日历来根据该事件的类名显示/隐藏元素。
确切的情况是我有一个复选框(比方说#daytimeEvent),我想切换事件的可见性 htat has class daytime in the array....
到目前为止我试过了,但它似乎完全从日历中删除了事件,不可能在之后将它们取回......
这是我当前的代码:
$('#daytimeEvent').on('change', function(){
if ($(this).is(':checked'))
{
// That part doesn't work
calendar.fullCalendar('renderEvent');
}
else
{
// This seems to destroy the event without having the opportunity to toggle the visibility back after
calendar.fullCalendar('removeEvents', function(event){
return $.inArray('daytime', event.className)
});
}
}
我用谷歌搜索了一下,似乎我不是唯一遇到这个问题的人,但我找不到任何解决方案。
最佳答案
我找到了解决方案(感谢@smcd 的引用)。执行此操作的好方法是在 eventRender 中你的日历的方法。我把我的逻辑放在那里然后这样做:
$('#myCalendar').fullCalendar({
// your init [...] then
eventRender: function(event, element) {
// Array that will store accepted classes
var eventAcceptedClasses = [];
if ($('.daytime-events-checkbox').is(':checked')){
eventAcceptedClasses.push('daytime-events');
}
if ($('.nighttime-events-checkbox').is(':checked')){
eventAcceptedClasses.push('nighttime-events');
}
displayEvent = false;
event.className.forEach(function(element){
if ($.inArray(element, eventAcceptedClasses) != -1){
displayEvent = true;
}
});
return displayEvent;
}
});
然后,要做的就是使用 rerenderEvents像下面这样在你的事件监听器中的方法。
$('.events-filter-checkbox').on('change', function(){
calendar.fullCalendar('rerenderEvents');
});
你不能按需隐藏和显示事件,但你可以重新渲染,这是非常灵活和快速的。
关于javascript - 有没有办法根据 className FullCalendar 切换事件可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40265496/