如何在一次初始化多个Fullcalendar时识别选择器id



我在同一页面上初始化两个日历,如下所示:

html

<div id="calendar1"></div>
<div id="calendar2"></div>

javascript

$("#calendar1, #calendar2").fullCalendar({
 .....
  events: function(start, end, timezone, callback) {
            var evt1=[{title:'A',start:'2015-02-01'}];
            var evt2=[{title:'B',start:'2015-02-01'}];
            calendarid = $(this);  <== how to get the id?
            if (calendarid = 'calendar1') { callback(evt1); }
            if (calendarid = 'calendar2') { callback(evt2); }                       
  }, // end of events
 .....
}

每个日历都有自己的一套活动。如何知道events函数中的选择器id?fullCalendar是否公开$(this)属性以允许程序员对其进行代码编写?

谢谢。

我建议你这样做:

使用选择器创建一个数组,并将其设置为日历配置的自定义选项:

var calendars = ['calendar1', 'calendar2'];
for (var i = 0; i < calendars.length; i++) {
    fullCalConfig.id = calendars[i];
    console.log(fullCalConfig);
    $('#'+fullCalConfig.id).fullCalendar(fullCalConfig);
}

现在,您可以从events函数中查找选择器:

events: function(start, end, timezone, callback) {
        var evt1=[{title:'A',start:'2015-02-01'}];
        var evt2=[{title:'B',start:'2015-02-01'}];
        calendarid = this.options.id;
        if (calendarid == 'calendar1') { callback(evt1); }
        if (calendarid == 'calendar2') { callback(evt2); }                       
  },

我为您设置了一个jsFiddle:http://jsfiddle.net/kqdzz5wq/1/

您是否尝试过在fullCalendar函数中获取$(this).attr('id');?这应该行得通。

如果你有问题,试着使用

$("#calendar1, #calendar2").each().fullCalendar({etc..

以确保每个对象都被单独调用,然后fullCalendar函数中的$(this).attr('id');就会工作。

最新更新