FullCalender.ioで選択した日を強調表示しようとしています(現在の日と同じように)。
フォロー中 FullCalendar-週ビューで特定の日を強調表示 基本的にクリックでカレンダーを再レンダリングし、クリックした日付と日付が一致するセルを強調表示する次のことを試しました。
dayRender: function(date, cell)
{
var moment = $('#calendar').fullCalendar('getDate');
if (moment.get('date') == date.get('date'))
{
$(cell).addClass('fc-state-highlight');
}
else
{
$(cell).removeClass('fc-state-highlight');
}
},
dayClick: function (date, allDay, jsEvent, view) {
$('#calendar').fullCalendar('render');
},
しかし、それは何もしていません。 :-(
このコードはv1.xで使用できます
$('#calendar').fullCalendar({
dayClick: function (date, allDay, jsEvent, view) {
$(".fc-state-highlight").removeClass("fc-state-highlight");
$(jsEvent.target).addClass("fc-state-highlight");
}
});
v2.X
$('#calendar').fullCalendar({
dayClick: function (date, jsEvent, view) {
$(".fc-state-highlight").removeClass("fc-state-highlight");
$(jsEvent.target).addClass("fc-state-highlight");
}
});
CSS .fc-state-highlight {background:red;}
注:これは、セルのdata-date
属性と関数date
のdayClick
パラメーターを使用することによっても他の方法で実現できます。
$('#calendar').fullCalendar({
dayClick: function (date, jsEvent, view) {
$(".fc-state-highlight").removeClass("fc-state-highlight");
$("td[data-date="+date.format('YYYY-MM-DD')+"]").addClass("fc-state-highlight");
}
});
他の答えに基づいて、これはあなたが必要とすることをします:
dayClick: function (date, jsEvent, view) {
$('.fc-day').each(function () {
$(this).removeClass("fc-state-highlight");
});
$("td[data-date=" + date.format() + "]").addClass("fc-state-highlight");
},
v2.X
$('#calendar').fullCalendar({
dayClick: function (date, jsEvent, view) {
$(".fc-state-highlight").removeClass("fc-state-highlight");
$(this).addClass("fc-state-highlight");
}
});
CSS .fc-state-highlight {background:red;}
簡単な回避策の1つは、selectable
を使用することです。
var calendar = $('#calendar');
calendar.fullCalendar({
selectable: true
})
このオプションはさらに厳しいAllows a user to highlight multiple days or timeslots by clicking and dragging
(出典: https://fullcalendar.io/docs/selection/selectable/ )、副作用1日だけクリックした場合は、選択した日を強調表示します。