在jQuery FullCalendar中防止其他月份事件的渲染

时间:2011-01-13 01:39:53

标签: jquery fullcalendar

我想禁止fullcalendar在其他月份的单元格中显示事件。我想我可以用eventRender事件做到这一点。

$('#calendar').fullCalendar({
    events: $.fullCalendar.myFeed(),
    eventRender: function (event, element) {
        if (event.start.getMonth() != ????)
            $(element).hide();
   }
});

我无法弄清楚要替换什么????获取日历的当前月份。有人有提示吗?

4 个答案:

答案 0 :(得分:3)

我想没有办法在这个事件中引用父日历。 “this”指的是事件对象。我没有意识到视图也作为第三个参数传递。我能够使用以下代码完成此任务:

    $('#calendar').fullCalendar({
        events: $.fullCalendar.myFeed(),
        eventRender: function (event, element, view) {
            if (event.start.getMonth() != view.start.getMonth())
                return false;
        }
    });

答案 1 :(得分:2)

如果您使用带有年视图的完整日历(https://github.com/tpruvot/fullcalendar)。 您不能在年视图上使用view.start.getMonth()。 我使用了一个通过eventAfterRender的小技巧:

eventAfterRender: function (event, element, view) {
    var col=element.closest('td').index()+1;
    var $cellh=element.closest('table').find('thead td:nth-child('+col+')');
    if ($cellh.hasClass('fc-other-month') == true)
            element.css('visibility','hidden')
},

答案 2 :(得分:0)

你可以使用一些自定义样式

.fc-other-month {
    background: white !important;
}

.fc-row .fc-bg {
    z-index: 5;
    pointer-events: none;
}

此处的解决方案:使用背景白色的fc-other-month日使用curent-month天。

答案 3 :(得分:0)

eventRender: function(event, element) {

  var view = $('#calendar').fullCalendar('getView');
  if (event.start.month() == view.intervalStart.month()) {
    element.addClass("bg-blue");
  }
},