这里总结一下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. BZOJ 2683 简单题 ——CDQ分治

    [题目分析] 感觉CDQ分治和整体二分有着很本质的区别. 为什么还有许多人把他们放在一起,也许是因为代码很像吧. CDQ分治最重要的是加入了时间对答案的影响,x,y,t三个条件. 排序解决了x ,分治 ...

  2. sql中查询中的when...then 语句

    ),jbrq, ),'/','-')as jbrq, ' then '启用' when ' then '未启用' else '修改' end cbzt,shzt from jc_yscbfxb sel ...

  3. MsSQLserver中修改字段值系统自动生成的脚本

    主要参考一下脚本的实现思路: ①创建临时表 ②创建临时表 ③向临时表插入数据 ④删除原表 ⑤临时表改名 /* 为了防止任何可能出现的数据丢失问题,您应该先仔细检查此脚本,然后再在数据库设计器的上下文之 ...

  4. Poj2676

    经典DFS现在看来nice啊! package SoduKu; import java.io.InputStreamReader; import java.util.Scanner; /* *我用ro ...

  5. 【加精】手机话费充值API接口(PHP版)

    电商周年庆,公司搞了一个关注微信公众号送小额话费的活动,送1元.2元.5元.10元.20元.50元等不同面值的. 为了实现话费充值服务,找了多家开通了话费接口服务,接入后测试.先是做接口整合的平台,P ...

  6. React-Native -课后练习

    import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, Image, } fro ...

  7. grep 信息提取

    1.提取svn版本库的版本号 svn info |grep -Po '(?<=Revision: )[0-9]*'

  8. 怎么统计指定文件夹下含有.xml格式的文件数目

    如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...

  9. 单页web应用是什么?它又会给传统网站带来哪些好处?

    文章来源:<单页Web应用:JavaScript从前端到后端> 什么是单页应用? 单页应用是指在浏览器中运行的应用,它们在使用期间不会重新加载页面.像所有的应用一样,它旨在帮助用户完成任务 ...

  10. CSS3总结

    1.圆角效果 border-radius: 1px 1px 1px 1px; /* 四个半径值分别是左上角.右上角.右下角和左下角.顺时针 */  右边半圆 div.right-circle{ hei ...