我正试图将一个clientEvent过滤器添加到一个已经在工作的AJAX fullCalendar中。这个想法是允许访问者通过在下拉列表中选择一个选项来过滤已经显示的事件。
目前的代码如下:
jQuery(document).ready(function($) {
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.post(
MyAjax.ajaxurl,
{
action: 'get_fullcalendar',
data: {
slotbegin: start.unix(), // données à compléter
slotend: end.unix()
}
},
function( events ) {
callback( events );
}
);
},
eventRender: function(event, element) {
element.qtip({
id: 'eventdetails',
content: {
text: event.image + event.description,
title: event.title
},
});
}
});
$("#cible_select").change(function() {
var cible = $(this).val()
var events = $('#calendar').fullCalendar('clientEvents', function(evt) {
return evt.public_cible == cible;
});
});
});
fullCalendar本身工作正常。但我不知道如何集成clientEvents位,所以当用户更改#cible_select选择器时会使用它。在过去的几个小时里,我一直在尝试很多事情,希望能为解决这个问题提供一些帮助。
非常感谢你的提示。
此函数可能会对您有所帮助。在任何需要的地方调用此函数。
function parseClientEvents(/*pass params here*/){
var clientArr = $('#calendar').fullCalendar('clientEvents');
for(i in clientArr){
console.log(clientArr[i]);
//all your logic goes here.
}
return true;
}
我似乎误解了clientEvents
的工作方式。我以为它会只显示选定事件的整个日历,但事实并非如此。removeEvents
可以隐藏/抑制人们不再想要的事件,但这些事件在客户端已经不可用了,因此如果用户改变主意并做出其他选择,则必须使用refetchEvents
。removeEventSource
仅在源数量有限的情况下有效,并且我希望能够组合多个过滤器,因此有相当多的组合。
因此,我正在彻底重新思考我的过滤策略:clientEvents
绝对不是在多标准的基础上切换打开/关闭事件的方法。