イベントはクライアント側またはサーバー側に保存されますか? クライアント側の場合、クリックされた時間にイベントが必要な場合、これは特に機能するはずです。
$('#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 操作を行わないようにすることができます (イベントの数によっては、イベントが大きくなり、扱いにくくなります)。