Jquery 使用FullCalendar和removeEvents方法筛选onclick上的事件

Jquery 使用FullCalendar和removeEvents方法筛选onclick上的事件,jquery,json,fullcalendar,Jquery,Json,Fullcalendar,我正在尝试使用FullCalendar显示JSON提要中的事件。它可以使用以下代码正常工作: $(document).ready(function() { // Initialize calendar $('#calendar').fullCalendar({ header: { left: 'prev', center: 'title', right: 'next' }, buttonText: {

我正在尝试使用FullCalendar显示JSON提要中的事件。它可以使用以下代码正常工作:

$(document).ready(function() {

// Initialize calendar
$('#calendar').fullCalendar({   
    header: {
        left: 'prev',
        center: 'title',
        right: 'next'
    },
    buttonText: {
        prev: 'Previous month',
        next: 'Next month'
    },
    columnFormat: {
        month: 'dddd'
    },
    editable: false,
    events: "events.json",
    disableDragging: true,                      
});
我试图创建一个链接,使用removeEvents方法过滤事件(理想情况下,它是一个选择菜单)。当我使用该方法并传入ID时,事件将被删除。文件规定:

idOrFilter也可以是一个过滤函数,它接受一个事件对象参数,如果应该删除它,则返回true

我读到filter函数应该像jQuery的grep方法一样工作,但我不知道如何实现它。我开始写下面的内容,但我不确定如何继续。任何建议或例子都将不胜感激

...

$('#filter').click(function() {
     $('#calendar').fullCalendar ( 'removeEvents', filter(events) );
}

...

function filter (events) {
...
}

如果使用
select
来完成此操作,则需要某种方式将
select
中的
选项与日历中的事件关联起来。我已使
选项
具有与日历中的事件相匹配的ID:

JavaScript(使用fullCalendar的
事件
属性):

事件源不必是数组,这只是我创建的示例

HTML:

如果在select with id
filter
下选择的选项的id与传递给它的事件的id相匹配,则
filter
函数将返回true。这个函数可以是任何东西,只要它返回true或false

它在后台工作的方式是,当您调用
removeEvent
并传递函数时,日历上的每个事件都会传递给该函数,如果返回true,则事件会被删除

我制作了一个工作示例(),其中还包括另一个filter函数和select元素的示例


希望有帮助

嗨,安德鲁,你的过滤功能工作得很好。谢谢当我将我的事件作为数组放入javascript中时,事件将被过滤,我可以在几个月之间来回移动,同时保持过滤器的完整性。但是,当我尝试指定JSON提要的URL时,过滤器工作正常,但是如果我转到另一个月,然后返回,所有事件都会重新加载。你知道怎么解决这个问题吗?嘿,安德鲁,我还有一个相关的问题:我怎么才能只过滤选中的事件?现在,如果我过滤圣诞节然后装箱,装箱过滤器将添加到现有过滤器中。我试图让它一次只过滤一个事件。我尝试在选择菜单更改期间添加rerenderevents(除了调用removeevents),但没有成功。谢谢@Manoj:经过一些研究,不幸的是,我不能完全弄清楚这些问题中的任何一个。
rerenderEvents
函数看起来不起作用,而且我手头没有JSON提要来测试您的其他问题。。。
events: [
    {
        id: 'event-1',
        title: 'Christmas Eve',
        start: '2010-12-24',
        allDay: true
    },
    {
        id: 'event-2',
        title: 'Christmas Day',
        start: '2010-12-25',
        allDay: true
    },
    {
        id: 'event-3',
        title: 'Boxing Day',
        start: '2010-12-26',
        allDay: true
    }
] 
<select id="filter">
    <option id="event-1">Christmas Eve</option>
    <option id="event-2">Christmas Day</option>        
    <option id="event-3">Boxing Day</option>        
</select>
function filter(event) {
    return $("#filter > option:selected").attr("id") === event.id;
}