Skip to content

Instantly share code, notes, and snippets.

View s0ber's full-sized avatar

Sergey Shishkalov s0ber

View GitHub Profile
@s0ber
s0ber / pub_sub.js
Created May 25, 2012 09:51
Пример реализации шаблона Pub/Sub
var mediator = (function(){
var subscribe = function(channel, fn){
if (!mediator.channels[channel]) mediator.channels[channel] = [];
mediator.channels[channel].push({ context: this, callback: fn });
return this;
},
publish = function(channel){
if (!mediator.channels[channel]) return false;
@s0ber
s0ber / avatar_mousemove.js
Created May 23, 2012 11:25
mousemove event handler
// Обработчик наведения курсора мыши на аватарку (плавное смещение фона при движении курсора мыши над аватаркой)
avatarHoverEvent: function(e) {
var $this = $(e.currentTarget),
offset = $this.offset(),
side = this.avatarsSide,
x = e.pageX - Math.floor(offset.left),
y = e.pageY - Math.floor(offset.top),
percentX = Math.round(x / side * 100),
percentY = Math.round(y / side * 100),
dataType = $this.attr('data-type');
@s0ber
s0ber / on_transition.js
Created May 21, 2012 11:46
onTransition function
/**
* Универсальный обработчик события для transition
*
* @param {DOM Element} el DOM-элемент, к которому применяется css transition
* @param {function} callback Функция, вызываемая после выполнения css transition
* @param {boolean} isNoFallback По умолчанию в браузерах, не поддерживающих css transition, сразу выполняется
* функция callback(). Если isNoFallback равен true, callback() не выполняется для старых браузеров
* @param {string} property Название css-свойства, которое подвергается преобразованием (используется, если к DOM-элементу
* применяется несколько css transitions, а callback() вызывать несколько раз не нужно)
* @param {boolean} autoStartAfterTransition Если равен true, то callback() вызывается сразу, если над DOM-элементом
var suggest = target
.autocomplete({
...
}) // Инициализируем у инпута автокомплит с набором параметров
.data('autocompleter'); // Сохраняем в переменную suggest объект автокомплита сохраненный в data атрибуте autocompleter за счет чейнинга
// Изменяем поведение метода position на нужное
suggest.position = function() {
var offset = this.dom.$elem.offset();
this.dom.$results.css({
$.extend($.Autocompleter.prototype, {
position: function() {
var offset = this.dom.$elem.offset();
this.dom.$results.css({
bottom: Plca.view.partials.$body.height() - offset.top,
left: offset.left
});
},
cloneFunc: function(func) {
var temp = function() {