一次初始化多个Fullcalendar时如何识别selector id?

How to identify selector id when initialize multiple Fullcalendar at one time?

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

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
 .....
}

每个日历都有自己的一组事件。我如何知道事件函数中的选择器 ID? fullCalendar 是否公开 $(this) 属性 让程序员在上面编写代码?

谢谢。

您是否尝试过 $(this).attr('id');进入 fullCalendar 函数?那应该有效。

如果您遇到问题,请尝试使用

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

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

我建议你这样做:

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

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/