fullcalendar agendaDay滚动到第一个事件

San*_*dra 2 jquery fullcalendar

我正在使用fullcalendar v2.4,我知道选项scrollTime可用于滚动以使agendaDay滚动到某个时间,如下所示:

$('#calendarday').fullCalendar({
    header: {
  },
   weekends: true, //  show Saturdays and Sundays
   defaultView: 'agendaDay',
   events: entries, 
   scrollTime: "15:00:00",
});
Run Code Online (Sandbox Code Playgroud)

现在我想滚动到当天的第一个事件:这意味着我使用jquery在agendaDay中动态获取第一个事件的开始时间:

var firstEventTime = $("div.fc-time:first> span:nth-child(1)").text() + ":00";
Run Code Online (Sandbox Code Playgroud)

这将找到第一个div"fc-time",然后选择内部范围中的开始时间(格式为H:mm).

但是将firstEventTime放入滚动条中并不起作用

$('#calendarday').fullCalendar({
    header: {
  },
   weekends: true, //  show Saturdays and Sundays
   defaultView: 'agendaDay',
   events: entries, 
   scrollTime: firstEventTime,
 });
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

小智 7

通过使用eventAfterAllRender选项,我能够在agendaDay视图中滚动到第一个事件一天.

请注意,这是查看插件生成的内部元素,因此如果作者在下一版本中更改它们,则可能必须更新此方法.

我也采用了一个快捷方式,并使用了Ariel Flesler的jQuery scrollTo插件,因为我已经在使用它了.如果您愿意,可以使用自己的javascript获得相同的结果.

jQuery scrollTo插件URL

eventAfterAllRender: function(view){
    if('agendaDay'===view.name){
            if($('.fc-time-grid-event').length>0){
                var renderedEvents = $('div.fc-event-container a');
                var firstEventOffsetTop = renderedEvents&&renderedEvents.length>0?renderedEvents[0].offsetTop:0;
                $('div.fc-scroller').scrollTo(firstEventOffsetTop+'px');
            }
        }            
    },
Run Code Online (Sandbox Code Playgroud)