Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Project.load = function (obj) {
for (var handler in obj) {
var load = obj[handler]();
if (!load) continue;
if (load.init) {
load.init();
} else {
Project.init(load);
}
}
}
MyProject.module.popUp = function (data) {
var $pp = $('<div class="project-popup"><a href="#" class="project-popup_close">Закрыть</a>'),
$bg = $('<div class="project-popup_backbg">');
function getBgDimenstions() {
return {
x: $(document).width(),
y: $(document).height()
}
}
function getPpPosition() {
return {
left: $(window).width() / 2 - $pp.width() / 2,
top: $(window).scrollTop() + ($(window).height() / 2) - $pp.height() / 2
}
}
function setPositions() {
var ppPos = getPpPosition(),
bgDim = getBgDimenstions();
$pp.css({ 'left': ppPos.left, 'top': ppPos.top });
$bg.width(bgDim.x).height(bgDim.y);
}
return {
isBuild: false,
el: {
pp: $pp,
bg: $bg
},
build: function () {
$('body').append($bg).append($pp.append(data));
var SELF = this;
$bg.click(function () {
SELF.hide();
});
$pp.find('.project-popup_close').click(function () {
SELF.hide();
return false;
});
},
show: function () {
if (!this.isBuild) {
this.build();
this.isBuild = true;
}
$('body').addClass('project-popup-overflow');
setPositions();
$pp.fadeIn();
$bg.fadeTo(300, 0.7);
$(window).bind('resize.popUp', function () {
setPositions();
});
},
hide: function () {
$pp.fadeOut();
$bg.fadeOut('normal', function () {
$('body').removeClass('project-popup-overflow');
});
$(window).unbind('resize.popUp');
},
destroy: function () {
$pp.remove();
$bg.remove();
}
}
}
case 'spellcheck: success':
w.sum.add(data.spellerrors);
spellerrors[data.phrase] = data.spellerrors;
break;
А во-вторых этот, даже большой, notice() — является почти идеальным изложением высокоуровневой логики всего приложения!
var eventEmitter = _.extend({}, Backbone.Events);
eventEmitter.bind('msg', function(msg){ console.log(msg) });
eventEmitter.trigger('msg', 'hello world');
div#foo" в this.element и он же в DOM. Делаем так: $('div#foo').replaceWith('div#bar'), в DOM объект заменяется, а вот в this.element ссылка ведёт на "div#foo", которого даже нету на странице.
Простая минималистская реализация сложных JavaScript приложений