您的事件是存储在客户端还是服务器端?如果在客户端,如果您希望在该点击时间发生事件,这应该特别有效:
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
$('#calendar').fullCalendar('clientEvents', function(event) {
if(event.start <= date && event.end >= date) {
return true;
}
return false;
});
}
});
这将提供与点击时间重叠并存储在客户端的事件。对于全天时段,它将给出当天重叠的所有事件。
如果您想要该日期本身的所有事件,无论是否单击了 allDay 时段或时间段。
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
if(!allDay) {
// strip time information
date = new Date(date.getFullYear(), date.getMonth(), date.getDay());
}
$('#calendar').fullCalendar('clientEvents', function(event) {
if(event.start <= date && event.end >= date) {
return true;
}
return false;
});
}
});
如果您的事件存储在服务器上,您需要获取 dayClick 回调中提供的日期,并使用它来构造对服务器的调用,以获取所需格式的信息。
编辑如果进行往返或尝试以其他方式获取信息
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
var startDate = new Date(date.getFullYear(), date.getMonth(), date.getDay(), 0, 0, 0).getTime();
var endDate = new Date(date.getFullYear(), date.getMonth(), date.getDay(), 23, 59, 59).getTime();
var cache = new Date().getTime();
$.getJSON("/json-events.php?start="+startDate+"&end="+endDate+"&_="+cache,
function(data) {
// do stuff with the JSOn data
}
}
});
如果你不想要往返,你也可以看看在 fullCalendar.js 中的 refetchEvents 中发生了什么。如果您不介意从 fullCalendar 主干中分离出来,您可以将获取的事件保存在某处,这样您就不会进行大量 DOM 操作(取决于事件的数量,因为它们变得很大会变得笨拙)。