此文运用的是优雅的Markdown而书
项目中写js时,有很多时候有需要重复利用的东西,我们可以给它们写成一个插件的形式,这样阅读性和适用性都会大大提高。最近抽个时间,好一番的研究了下 Jcrop 的插件,发现它们的代码写的还算比较清晰,所以扒出来研究了一番、记录,以备后面呢利用。研究的不够透彻,还望多多指点 😉
以下是我自己根据源码,总结出来的一份模板,在使用时候根据模板嵌套自己的代码即可。上代码
-
pageplugin.js(function ($) {
$.PagePlugin = function (obj, opt) {
var options = $.extend({}, $.PagePlugin.defaults),
docOffset,
_ua = navigator.userAgent.toLowerCase(),
is_msie = /msie/.test(_ua),
ie6mode = /msie [1-6]./.test(_ua);if (typeof (obj) !== 'object') {
obj = $(obj)[0];
}if (typeof (opt) !== 'object') {
opt = {};
}function setOptions(opt) {
if (typeof (opt) !== 'object') opt = {};
options = $.extend(options, opt);
}//自定义方法,需要在下面api声明
function setImage(src, callback) {if (typeof (callback) == 'function') {
callback.call(api);
}
}setOptions(opt);
var $orig = $(obj);//调用内部方法
ScoreManager.getBo();
ScoreManager.getCo();//scoreManager,相当于自定义类
var ScoreManager = (function () {
function getScore1(){
alert("key1");
}function getScore2(){
alert("key2");
}return {
getBo: getScore1,
getCo: getScore2
};}());
//定义api
var api = {
setImage: setImage,
focus:ScoreManager.getBo,
getBounds: function () {
return [1, 2];
}};
$orig.data('PagePlugin', api);
return api;
}//设置默认属性
$.PagePlugin.defaults = {
marginT: 0,
marginL: 0
};
}(jQuery)); -
如何使用?
index.jsvar api = null;
//这里"#page_plugins"我定义为传入控件的内容,可能为id,亦可能class。
api = $.PagePlugin("#page_plugins", {
marginT: 10,
marginL: 20
});api.getBounds();
api.setImage("h1", function () {});
浙公网安备 33010602011771号