这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式。下面就两种形式来分析俩个例子。

例子1:

;(function ($,window,document,undefined) {
$.fn.changeColor= function (option) {
var defined={
width:"400",
height:"500",
color:"red",
module:"animate"
};
var setting= $.extend({},defined,option);
var func={
changeColor: function (obj,setting) {
obj.css({
width:setting.width,
height:setting.height,
backgroundColor:setting.color
})
},
animateColor: function (obj, setting) {
obj.animate({
width:setting.width,
height:setting.height,
},3000)
}
};
return this.each(function () {
if(setting.module==="animate"){
func.animateColor($(this),setting);
}else if(setting.module==="css"){
func.changeColor($(this),setting);
}
})
} })(jQuery,window,document);

通过代码可以看到,所有的局部函数都放在了$.fn.changeColor中,在里面通过func这个对象来组织函数,最后通过return把jquery对象返回出去实现链式调用。
例子2:
;(function ($,window,document,undefined) {
var changeStyle= function (option) {
var defined={
width:"500",
height:"300",
color:"red"
};
this.setting= $.extend({},defined,option);
console.log(this.setting)
};
changeStyle.prototype={
styleColor: function (ele) {
return ele.css({
backgroundColor:this.setting.color
})
},
styleWidth: function (ele) {
return ele.css({
width:this.setting.width
});
},
styleHeight: function (ele) {
return ele.css({
////这里的return为的是在返回change.styleWidth()这个函数的基础上,把ele暴露出去。
height:this.setting.height
})
}
};
$.fn.changeStyle= function (option) {
var change=new changeStyle(option);
if(option.style==="width"){
return change.styleWidth($(this));
//这里的return为的是返回change.styleWidth()这个函数,暴露出去。
}else if(option.style==="height"){
return change.styleHeight($(this));
}else if(option.style==="color"){
return change.styleColor($(this))
}
} })(jQuery,window,document);
上面的例子中采用的是构造函数的方式,先在changeStyle函数中传入参数并挂接到原型上,等待后续调用。然后把具体的函数,挂接到原型对象上,changeStyle.prototype。这里需要注意的两点是这里用到了两次return,为的是能把jqery对象暴露到外层,供调用。

jquery插件的两种形式的更多相关文章

  1. jQuery中开发插件的两种方式

    jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ...

  2. Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法

    上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事前端工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知 ...

  3. 基于 Scrapy-redis 两种形式的分布式爬虫

    基于 Scrapy-redis 两种形式的分布式爬虫 .caret, .dropup > .btn > .caret { border-top-color: #000 !important ...

  4. C++:一般情况下,设计函数的形参只需要两种形式

    C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...

  5. SQL 关于apply的两种形式cross apply 和 outer apply(转)

    转载链接:http://www.cnblogs.com/shuangnet/archive/2013/04/02/2995798.html apply有两种形式: cross apply 和 oute ...

  6. jQuery插件开发的两种方法及$.fn.extend的详解

    jQuery插件开发分为两种: 1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.ex ...

  7. SQL 关于apply的两种形式cross apply 和 outer apply

    SQL 关于apply的两种形式cross apply 和 outer apply 例子: CREATE TABLE [dbo].[Customers]( ) COLLATE Chinese_PRC_ ...

  8. SQL关于apply的两种形式cross apply和outer apply(转载)

    SQL 关于apply的两种形式cross apply 和 outer apply   apply有两种形式: cross apply 和 outer apply   先看看语法:   <lef ...

  9. 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编

    在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...

随机推荐

  1. 【转载】Java集合类Array、List、Map区别和联系

    Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...

  2. Oracle 查询出来的数据取第一条

    Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:h ...

  3. 《转》Unity3D研究院之UGUI一个优化效率小技巧

    无意间发现了一个小技巧.如下图所示,可以发现UGUI的Image组件的RaycastTarget勾选以后会消耗一些效率,为了节省效率就不要勾选它了,不仅Image组件Text组件也有这样的问题. 一般 ...

  4. vim配置及快捷键

    vim+python http://codingpy.com/article/vim-and-python-match-in-heaven/ vim+c++ http://jikaichen.com/ ...

  5. Building a RESTful Web Service

    Reference: https://spring.io/guides/gs/rest-service/ 参照上述链接进行操作,使用gradle build. 因为total new to this. ...

  6. 已知服务器ftp的账号密码,求解数据库表的内容

    一开始觉得这两个是完全不相干的东西,直到出现了这样一个问题,对方网站只有ftp的账号密码,并且能正常访问到代码.但是当需求了解注册人数的时候,后台没有显示,只能到数据库去找,这时怎么找呢? 原来是可以 ...

  7. 深入探索RB-tree数据结构

    引子 部门在各个团队推广软件通用技能矩阵工具,希望通过度量找到能力薄弱点,引导团队进行改进.从我们团队的数据上看,团队在数据结构和算法上的短板明显,需要加强,这也是写这篇文章的背后的初衷. 数据结构和 ...

  8. druid sql黑名单 报异常 sql injection violation, part alway true condition not allow

    最近使用druid,发现阿里这个连接池 真的很好用,可以监控到连接池活跃连接数 开辟到多少个连接数 关闭了多少个,对于我在项目中查看错误 问题,很有帮助, 但是最近发现里面 有条sql语句 被拦截了, ...

  9. eclipse tomcat add and remove工程异常

    1  eclipse导入工程后,右击server add and remove工程时,there are no resource: 解决方案:右击工程->单击property->选择pro ...

  10. Grunt 使用记录

    想了解Grunt,可以先去官网 看看. 第一次接触Grunt是通过Coding的移动端项目, 刚开始因为环境的问题折腾了一两天,然后就顿悟了. Grunt构建工具对于前端开发而言,简直是神器(ps.虽 ...