Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// 1 -----------------------------------------------------
$.extend($.fn, {
timeSlider: function(options){
return this.each(function(){
var $this = $(this);
// если к этому элементу уже применен timeSlider плагин, апдейтим опции и перерисовываем его
if($this.data('timeSlider')){
var timeSlider = $this.data('timeSlider');
$.extend(true, popup.timeSlider, options);
// перерисовка
timeSlider.render();
}else $this.data('timeSlider', new TimeSlider(this, options));
});
}
});
// 2 -----------------------------------------------------
TimeSlider = function(elem, options){
this.elem = $(elem);
// совмещаем дефолтные опции с пришедшими извне
this.settings = $.extend(true, {
//... default options ...
}, options);
// далее генерируем DOM вашего слайдера, не забывая про this
this.container = $('<div class="timeslider-container" unselectable="on"></div>');
this.downArrow = $('<div class="timeslider-arrow timeslider-down-arrow" unselectable="on"></div>');
this.upArrow = $('<div class="timeslider-arrow timeslider-up-arrow" unselectable="on"></div>');
........
this.render();
};
// 3 -----------------------------------------------------
// все методы слайдера выносим в прототип
$.extend(TimeSlider.prototype, {
updateSlider: function(){...}
updateInput: function(){...}
updateArrows: function(){...}
pleaseSet: function(){...}
render: function(){...}
});$('#someButton').click(function(){
$('#slider1').data('timeSlider').downArrow.click();
});$.extend(true, popup.timeSlider, options);$.extend(true, timeSlider.settings, options);
Пишем свой плагин для jQuery