Я обновил свой код здесь: http://jsfiddle.net/Lqratxp1/
Теперь вы можете создать объект, содержащий данные для событий, которые вы хотите создать. Теперь вы можете инициализировать его таким образом:
$("#cal").calendar({year:"2015" month:"9",events:{'9-3':'test1','9-4':'test2'}});
Все, что вам нужно было сделать, чтобы изменить календарь класс:
var days = [];
$.each(config.events,function(k,v){
days.push(new Event(k,v))
});
Это используется для преобразования объекта, который вы передаёте в качестве параметра в массиве Мероприятия.
Вот полный класс:
jQuery.fn.calendar = function(settings){
var config = {
// default settings
year: "",
month: "",
events: []
// ...
};
// change default settings
if (settings) { config = $.extend({}, config, settings); }
var dayIndex = 0;
function Event(start,title){
var parts = start.split('-');
this.start= new Date(parts[2] || new Date().getFullYear(), parts[0] - 1, parts[1]);
this.end= new Date(this.start);
this.title = title;
}
var days = [];
$.each(config.events,function(k,v){
days.push(new Event(k,v))
});
var mon = config.month - 1; // (1)
var d = new Date(config.year, mon, 1);
var start = 2 - d.getDay();
var dateobj = new Date();
var table = ['<table>'];
while (d.getMonth() <= mon) {
table.push('<tr>');
for (var i = 0; i < 7; i++) {
d = new Date(config.year, mon, start++);
tmp = '<td>';
tmp += '<div class="date">' + d.getDate() + '</div><div class="titlecontainer">';
var events = days.filter(function(e){ return e.start <= d && e.end >= d;}); //get all events for this day
if(events.length){
events.forEach(function(e){
tmp += '<div class="title">'
+ e.title //+ ' grid:' + e.grid
+ '</div>';
});
}
tmp += '</div></td>';
table.push(tmp)
}
table.push('</tr>');
}
table.push('</table>')
$(this).html(table.join('\n'));
};
$("#cal").calendar({ year: "2015", month: "9",events:{'9-3':'test1','9-4':'test2'} });
Возможно ли это? Ваш вопрос не очень ясен. –
Вызовите плагин снаружи? – nowhere
Вы пытаетесь использовать опцию 'events' в своем плагине? – lshettyl