【发布时间】:2015-02-07 08:11:28
【问题描述】:
我正在尝试练习不同的模块模式。下面是用于滚动功能的 IIFE 模式,可用于不同页面中的不同元素(不确定这是正确的模式)。
我的问题是 1. 如何替换 IIFE 模块外的 config = {} 选项? 2.我命名了每一个函数,不确定这是写这种代码的一种矫枉过正或建议的方式。 3. 什么是更好的模块模式?
;(function($, ScrollToTop, undefined) {
'use strict';
var clickedElem = $('[data-scroll]');
var config = {
scrollDistance: 500,
speed: 300
};
var _scrollToTargetAnimation = function () {
$('body').animate({
scrollTop: $($(this).data('scroll')).offset().top
}, config.speed);
return false; //stop bubbling
};
var _showHideAnimation = function () {
if ($(this).scrollTop() > config.scrollDistance) {
clickedElem.fadeIn(config.speed);
} else {
clickedElem.fadeOut(config.speed);
}
};
ScrollToTop.showHide = function() {
if ($('.top-bar').length) return;
$(document).scroll( _showHideAnimation );
};
ScrollToTop.clickBtn = function() {
clickedElem.on('click', _scrollToTargetAnimation );
};
ScrollToTop.init = function (config) {
$.extend(this.config, config);
ScrollToTop.showHide();
ScrollToTop.clickBtn();
};
})(jQuery, window.ScrollToTop = window.ScrollToTop || {});
$(function() {
config = {
scrollDistance: 500,
speed: 300
};
ScrollToTop.init(config);
});
【问题讨论】:
标签: javascript jquery module singleton iife