我当前正在尝试触发DayClick时获取事件(类型为background
)。
由于背景类型的原因,我无法使用EventClick触发器(我不知道为什么,但在我的情况下什么也没有发生,这是FullCalendar的问题?)。
这是我的初始化代码:
$('#calendarRoomUnavailable').fullCalendar({
height: 'auto',
header: {
left : '',
center: 'title',
right: ''
},
defaultView: 'year',
defaultDate: getDateFilterRoomAvailable(),
lang: 'fr',
firstDay: 1,
columnFormat: 'ddd D/M',
selectable : false,
weekends: false,
navLinks : false,
events: basePath + '/agenda/datalist/room_available',
viewRender: function (view, element) {
},
eventRender: function(event,element){
if(event.rendering === "background"){
element.data(event); //store the event data inside the element
}
},
dayClick: function (date, jsEvent, view) {
console.log(jsEvent)
},
editable:false,
});
我想要什么:
当我单击某天时,我想要获取与该天相关的事件(背景)(我的日历中每天只有一个事件)。
当前,我正在使用eventRender + dayClick:
eventRender: function(event,element){
if(event.rendering === "background"){
element.data(event); //store the event data inside the element
}
},
dayClick: function (date, jsEvent, view) {
console.log(jsEvent)
[...]
}
通过DayClick上的console.log JSEvent,我知道它让我错了<td>
:
Img
因为,当我尝试使用类<td>
获取目标fc-bgevent
时,什么都没有发生:
dayClick: function (date, jsEvent, view) {
console.log(jsEvent)
if (jsEvent.target.classList.contains('fc-bgevent')) {
console.log($(jsEvent.target).data());
}
如果我尝试转到由target
获取的HTML元素jsEvent
,它会向我显示错误的<td>
,而我对此无能为力... >
有人知道如何绕过它吗?
谢谢!
从日期获取一个事件的代码:
function getEventFromDate(date) {
var allEvents = [];
allEvents = $('#calendarRoomUnavailable').fullCalendar('clientEvents');
var event = $.grep(allEvents, function (v) {
return +v.start === +date;
});
if (event.length > 0) {
return event[0];
} else {
return null;
}
}
答案 0 :(得分:0)
在@ADyson注释之后,我的最终函数如下所示:
cp=-1
带有一个小的函数,可获取没有库的格式化日期,例如Moment.js或Date.js :
function getEventFromDate(date) {
var eventToReturn = null;
$('#calendarRoomUnavailable').fullCalendar('clientEvents', function(event) {
var event_start = formatDateYmd(new Date(date),'-');
var date_formated = formatDateYmd(new Date(event.start),'-');
if(event_start === date_formated) {
eventToReturn = event;
}
});
return eventToReturn;
}
我希望找到性能更高的东西,但是这将执行时间除以2。
再次感谢。