jquery fullcalendar事件过滤

前端之家收集整理的这篇文章主要介绍了jquery fullcalendar事件过滤前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
在fullcalendar中是否有任何方法在客户端动态过滤事件?
当我从服务器(json_encoded)获取事件时,我将自己的参数“school_id”分配给每个事件.
在fullcalendar准备好之后,我想用“select”动态过滤事件.

我在页面添加“select”元素,如下所示:

  1. <select id='school_selector'>
  2. <option value='all'>All schools</option>
  3. <option value='1'>school 1</option>
  4. <option value='2'>school 2</option>
  5. </select>

在javascript代码中我添加

  1. jQuery("#school_selector").change(function(){
  2. filter_id = $(this).val();
  3. if (filter_id != 'all') {
  4. var events = $('#mycalendar').fullCalendar( 'clientEvents',function(event) {
  5. if((filter_id == 'all') ) {
  6. return true;
  7. }else{
  8. //what I need to write here to dynamic filter events on calendar?
  9. });
  10. }
  11. });

但它不起作用.
任何帮助都会很棒.谢谢.

解决方法

从fullCalendar的第2版开始,您可以使用 eventRender回调来有选择地呈现事件.将此与onChange处理程序中的 rerenderEvents方法调用相结合,您的事件应根据所选选项自动更新.
  1. $('#mycalendar').fullCalendar({
  2. events: [
  3. {
  4. title: 'Event 1',start: '2015-05-01',school: '1'
  5. },{
  6. title: 'Event 2',start: '2015-05-02',school: '2'
  7. },{
  8. title: 'Event 3',start: '2015-05-03',{
  9. title: 'Event 4',start: '2015-05-04',school: '2'
  10. }
  11. ],eventRender: function eventRender( event,element,view ) {
  12. return ['all',event.school].indexOf($('#school_selector').val()) >= 0
  13. }
  14. });
  15.  
  16. $('#school_selector').on('change',function(){
  17. $('#mycalendar').fullCalendar('rerenderEvents');
  18. })
  1. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  2. <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>
  3. <script src="http://fullcalendar.io/js/fullcalendar-2.3.1/fullcalendar.min.js"></script>
  4. <link rel="stylesheet" href="http://fullcalendar.io/js/fullcalendar-2.3.1/fullcalendar.min.css" />
  5.  
  6. <select id="school_selector">
  7. <option value="all">All</option>
  8. <option value="1">School 1</option>
  9. <option value="2">School 2</option>
  10. </select>
  11.  
  12. <div id="mycalendar"></div>

上面,如果SELECT的值为’all’或与事件对象的school属性匹配,则eventRender函数将返回true并显示事件.否则在渲染期间将跳过它.

方法优于将过滤参数传递到事件源,因为这需要多次往返服务器.您可以一次加载所有事件,并使用eventRender在显示时动态过滤它们.

猜你在找的jQuery相关文章