jQuery插件开发方式
一、jQuery扩展
1、$.extend(object)
类似于.Net的扩展方法,用于扩展jQuery。然后就可以用$.的方式调用。
- $(function(){
- $.extend({ fun1: function () { alert("为jQuery扩展一个fun1函数!"); } });
- $.fun1();
- })
2、$.fn.extend(object)
扩展jQuery的对象。
- $.fn.extend({ fun2: function () { alert("执行方法2"); } });
- $("#id1").fun2();
可以用google来看看:
上面的写法等同于:
- $.fn.fun2 = function () { alert("执行方法2"); }
- $(this).fun2();
二、私有域
其定义方式如下:
- (function ($) { })(jQuery);
- //相当于
- var fn = function (xxoo) { };
- fn(jQuery);
以下代码弹出123。
- $(function(){
- var fn = function (xxoo) { };
- fn(alert(123));
- })
三、定义插件的基本步骤
1、定义作用域
开发一个jQuery插件,首先要把插件的代码与外界隔离开来,外部的代码不允许直接访问插件内部的代码,插件内部的代码也不影响外部。
- //步骤1 定义插件私有作用域
- (function ($) {
- })(jQuery);
这样就能保证插件内部的代码与外界隔离了。
2、扩展jQuery
定义了作用域之后,为了能够让外部调用,就需要将插件扩展到jQuery。
- //步骤1 定义私有作用域
- (function ($) {
- //步骤2 插件的扩展方法名称
- $.fn.MyFrame = function (options) {
- }
- })(jQuery);
3、默认值
定义了jQuery插件之后,如果希望某些参数具有默认值,那么可以以这种方式来指定。
- //步骤1 定义私有作用域
- (function ($) {
- //步骤3 插件的默认值属性
- var defaults = {
- Id: '#id1',
- };
- //步骤2 插件的扩展方法名称
- $.fn.MyFrame = function (options) {
- //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
- var options = $.extend(defaults, options);
- }
- })(jQuery);
4、支持jQuery选择器
- //步骤1 定义私有作用域
- (function ($) {
- //步骤3 插件的默认值属性
- var defaults = {
- Id: '#id1',
- };
- //步骤2 插件的扩展方法名称
- $.fn.MyFrame = function (options) {
- //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
- var options = $.extend(defaults, options);
- }
- //步骤4 支持jQuery选择器
- this.each(function () {
- });
- })(jQuery);
5、支持jQuery的链式调用
- //步骤1 定义私有作用域
- (function ($) {
- //步骤3 插件的默认值属性
- var defaults = {
- Id: '#id1',
- };
- //步骤2 插件的扩展方法名称
- $.fn.MyFrame = function (options) {
- //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
- var options = $.extend(defaults, options);
- }
- //步骤4 支持jQuery选择器
- //步骤5 支持链式调用(将步骤4返回)
- return this.each(function () {
- });
- })(jQuery);
6、插件内部方法
- //步骤1 定义私有作用域
- (function ($) {
- //步骤3 插件的默认值属性
- var defaults = {
- Id: '#id1',
- };
- //步骤6 在插件里定义函数
- var MyFun = function (obj) {
- alert(obj);
- }
- //步骤2 插件的扩展方法名称
- $.fn.MyFrame = function (options) {
- //步骤3 合并用户自定义属性,默认属性(如果options为空,则使用defaults)
- var options = $.extend(defaults, options);
- }
- //步骤4 支持jQuery选择器
- //步骤5 支持链式调用(将步骤4返回)
- return this.each(function () {
- //步骤6 在插件里定义函数
- MyFun(this);
- });
- })(jQuery);
由于作用域关系,步骤6的私有函数目前允许的插件内部使用。
本文乃笔记,原文来自:http://www.cnblogs.com/xcj26/p/3345556.html
jQuery插件开发方式的更多相关文章
- 教你开发jQuery插件(转)
教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...
- 【转】教你开发jQuery插件
阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblo ...
- 开发JQuery插件(转)
教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...
- jquery插件与扩展一
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- 如何编写jQuery插件
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- jQuery插件手把手教会(一)
jQuery插件开发教程 ——让你的jQuery水平提升一个台阶 要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台 ...
- 如何使用jQuery写一个jQuery插件
jQuery插件其实是前端框架的思维,构成一个框架,个人认为必须满足以下几个基础条件:1. 可重用,2. 兼容性,3. 维护方便,虽说现在有很多比较成熟的前端框架,但是也有部分存在配置麻烦,学习成本大 ...
- 教你开发jQuery插件
jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...
- 转:10条建议让你创建更好的jQuery插件
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...
随机推荐
- 由csdn开源项目评选中闹出刷票问题想到投票程序的设计
帖子<#CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!> http://www.cnblogs.com/sanshi/p/3155946.html 网站投 ...
- RAC_Oracle集群服务安装RAC(案例)
2015-01-23 Created By BaoXinjian Thanks and Regards
- PLSQL_闪回操作4_Flashback Drop
2014-06-25 Created By BaoXinjian
- java反射1
一.Class部分 加载类的几种方式 // 1. Class clazz = Class.forName("com.wzh.test.reflect.Person"); // 2. ...
- ruby中将数组转换成hash
class Arraydef to_h(default=nil)Hash[ *inject([]) { |a, value| a.push value, default || yield(value) ...
- [Java] 使用Comparator排序对象
package test.collections; import java.util.ArrayList; import java.util.Collection; import java.util. ...
- [ActionScript 3.0] AS3 GUID(全局唯一标识符)
package com.controls { import flash.display.Sprite; import flash.system.Capabilities; public class G ...
- SQL Server2008 TIME类型
SQL Server2008现在有了一个TIME数据类型,它允许你只存储一个时间值而没有时间.如果想要存储一个特定的时间信息而不涉及具体的日期时,这将非常的有用.TIME数据类型存储使用24小时制,它 ...
- js注意事项
在数组顶部插入一条数据 data.result.unshift({ Value: 'all', Text: '请选择分类' }); 执行iframe中的javascript方法 window.fram ...
- Android系统下的动态Dex加载
1 问题在Android系统中,一个App的所有代码都在一个Dex文件里面.Dex是一个类似Jar的存储了多有Java编译字节码的归档文件.因为Android系统使用Dalvik虚拟机,所以需要把使用 ...