Пишу свой календарь.
Чуть-чуть кода плагина
(function($) {
var months = {
en: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
weekDays = {
en: ['S', 'M', 'T', 'W', 'T', 'F', 'S']
},
defaults = {
lang: 'en',
cDate: '',
cMonth: '',
cYear: '',
showDate: ''
};
var dp = {
init: function(options) {
var date = new Date(),
cDate = date.getDate(),
cMonth = date.getUTCMonth(),
cYear = date.getFullYear();
defaults.cDate = cDate;
defaults.cMonth = cMonth;
defaults.cYear = cYear;
defaults.showDate = cDate + '/' + (cMonth + 1) + '/' + cYear;
return this.each(function() {
var params = $.extend(defaults, options),
sDateArr = params.showDate.split("/");
params.sDate = +(sDateArr[0]);
params.sMonth = +(sDateArr[1] - 1);
params.sYear = +(sDateArr[2]);
$(this).data('dpicker', params);
dp.getDPicker($(this), params);
});
},
getDPicker: function(element) {
var content;
content = '<div class="dpicker" data-value="">';
//вызов дополнительных методов для построения шапки, календаря, списка месяцев итд
content += '</div>';
element.html(content);
}
};
$.fn.dpicker = function(method) {
if (dp[method]) {
return dp[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return dp.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' are not exist');
}
};
})(jQuery);
Собственно сам вызов:
$('.date-from').dpicker({}); - тут строим календарь для сегодняшнего дня
$('.date-to').dpicker({lang: 'ru', showDate: '09/10/13'}); - тут (для наглядности) для какой-то даты, передав параметры
Проблема:
в коде при формировании календаря я к родителю в data('dpicker') сохраняю данные этого календаря. То есть для первого элемента сохранится дефолтный объект, для второго - уже с той датой и языком который я выбрал. Строятся они хорошо, но почему-то у первого элемента перезаписывается поле data на то что должно быть у второго. Кто знает почему так?
Спасибо