javascript - 有没有办法根据 className FullCalendar 切换事件可见性

标签 javascript jquery fullcalendar

我想知道是否有一种方法可以使用完整日历来根据该事件的类名显示/隐藏元素。

确切的情况是我有一个复选框(比方说#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/

相关文章:

javascript - 为什么这个 getter 返回未定义?

javascript - 如何使字段显示为文本而无需 ng-repeat 内的 HTML 代码

jquery - 如何正确使用jquery的tabs()函数?

javascript - PreventDefault() 不会阻止发送表单

javascript - 如何在jquery fullcalendar中通过ajax响应发送日历事件

javascript - 初始加载事件

javascript - 验证器 html 输入类型文件

css - 为全日历中的外部事件重置(左上宽度 css 样式)

javascript - 物体行为异常

javascript - FullCalendar 3 法语版