知识点:
什么是插件
jQuery插件的模式
jQuery插件的Lightweight Start模式(入门级插件模式) 8.1 插件(Plug-in)
“插件”这个关键字,估计大家在日常生活中经常有所耳闻。例如:各网页浏览器,允许用户安装一些插件,增强用户体验,常见的Adobe Flash播放器,银行安全交易插件等。对于不做编程的朋友来说,是一个无所谓的词,但是对于咱们IT技术行业的朋友来说,是必须要了解,知道的。
咱们不是学者,不做特别规范的学术性研究,只要能够理解、够用就可以了。
因为咱们只是编程行业,所以将插件首先约束在编程领域试着理解。“插件”,是一段程序,它是与主应用程序交互,并扩展、替代主应用程序特定模块(功能)。
在js及js的一些框架Jqurey、ExtJs、Prototype···也比较流行以开发插件的形式,增强其程序的健壮性、伸缩性、安全性。其中JQuery的流行程度、市场占有率是最高的,当然也是咱们本次学习的 主题。
以下两个网址是官方资料,感兴趣的朋友可以去了解一下。
jQuery官网:http://jquery.com/
jQuery官网插件,有许多比较稳定、实用的插件,如果您感兴趣,也可以向官方贡献你的代码:http://plugins.jquery.com/ 下面一段代码展示了jQuery插件Django Superformset 的写法:
/*
* django-superformset
* https://github.com/jgerigmeyer/jquery-django-superformset
*
* Based on jQuery Formset 1.1r14
* by Stanislaus Madueke
*
* Original Portions Copyright (c) 2009 Stanislaus Madueke
* Modifications Copyright (c) 2013 Jonny Gerig Meyer
* Licensed under the BSDv3 license.
*/ (function ($) { 'use strict'; var methods = {
init: function (opts) {
var vars = {}; var opti = $.extend({}, $.fn.superformset.defaults, opts);
var wrapper = vars.wrapper = $(this);
var rows = vars.rows = wrapper.find(options.rowSel); var c = rows.closest(options.containerSel); //@余下的代码略···
}(jQuery)); 完整代码示例下载:http://plugins.jquery.com/django-superformset/
另外,谢谢Jonny Gerig Meyer代码。
如果您还帮助别人解决一些常见的问题,或者想按照自己的想法写一些有趣并可以重复使用的一些插件,那么请跟紧我的步伐,继续学习
8.2 模式
学习任何知识首先需要了解一下基础和一些规则,才能够在其上面构建自己需要的东西。学习jQuery插件也不例外,在很多社区都有一些最佳实践,我们先看看一些最基本的jQuery插件知识。
第一种写法如下,
代码1:
$.fn.myPluginName = function(){
//@您的插件业务逻辑
}
代码2:
(function ($) {
$.fn.myPluginName = function(){
//@您的插件业务逻辑
}
})(jQuery);
代码1与代码2有什么不同,相信对于大家已经明朗化了。第一,将带有 $.fn.myPluginName的代码放入闭包中,可以与外部环境隔离,防止产生冲突,还可以将闭包看做一个模块,以结构化代码的作用;第二,将jQuery以参数的形式传递进去,映射到$符上,可以防止在其它JavaScript库之间产生冲突。
第二种写法如下,
我们可以利用jQuery的jQuery.extend(),能够一次定义多个函数,这种写法的主要意义就是在语义表达上更好。
代码3:
(function ($) {
$.extend($.fn, {
myPlugin : function () {
//@您的插件业务逻辑
}
});
})(jQuery)
8.3 Lightweight Start模式
通过上边的介绍,大家已经具备jQuery插件的基础知识了。下面通过一段简单的代码向大家展示一下Lightweight Start模式,具体解释请看代码注释。
代码4:
/*
* jQuery Lightweight 插件
* 新浪微博 :@席新亮_javascript_html5
* QQ:939898101
* Email:939898101@qq.com
*/ /*
*1,在代码开始之前,加一个分号,可以防止没有正常关闭的插件
*2,undefined是ECMAScript3中定义的,可以修改,但在ECMAScript5中undefined不能修改。
* undefined没有真正传递进来以保证是真正的undefined
*3,把window与document传递进来作为局部变量,可以减少作用域的访问,加快速度,以及降低引用同一个插件的影响
*/
; (function ($, window, document, undefined) {
//私有 默认变量
var myPluginName = "defaultName",
defaults = {
otherName : "value"
};
//私有 构造插件的函数
var ctorPlugin = function (element, options) {
this.element = element; //利用jQuery 的extend 方法合并对象 this.opti defaults, options); this._default = defaults;
this.name = myPluginName ;
this.init();
};
//原型链上添加方法 ctorPlugin .prototype.init = function () { //执行一些初始化的逻辑,然后就可以访问DOM,进行一些业务处理 }; //将插件包装起来,利用模块模式,防止多次实例出现 $.fn[myPluginName ] = function (options) { return this.each(function () { var myPluginNameStr = "plugin_" myPluginName ; if (!$.data(this, myPluginNameStr )) { $.data(this, myPluginNameStr , new ctorPlugin (this, options)); } }); }; })(jQuery, window, document); 用法如下: elementStr为获取节点的指定字符
$(elementStr). defaultName({
otherName : "your value"
});
通过以上代码可以看出:
必须有分号
将window、document、undefined作为参数传入
一些基本的(私有)默认对象
简单的插件构造函数,执行一些初始化
扩展默认值的一些选项
一个包装器避免多次创建
8.4 扩展视野
jQuery 插件官方学习:http://learn.jquery.com/plugins/

jQuery组件写法的更多相关文章

  1. 封装两个简单的Jquery组件

    Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件:在项目过程中,有些插件总是不那么令人满意: 主要说两个项目用途: 1.  遮罩层,跟一般的 ...

  2. Asp.NetCore之组件写法

    本章内容和大家分享的是Asp.NetCore组件写法,在netcore中很多东西都以提供组件的方式来使用,比如MVC架构,Session,Cache,数据库引用等: 这里我也通过调用验证码接口来自定义 ...

  3. jQuery组件开发之表格隔行选中效果实现

    一.效果展示如下 jQuery组件之表格插件源码 //表格选中插件 //方式一 (function($){ var chosTabBgColor = function(options){ //设置默认 ...

  4. 基于Bootstrap的DropDownList的JQuery组件的完善版

    在前文 创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件 中,实现了DropDownList的JQuery组件,但是留有遗憾.就是当下拉菜单出现滚动条的时候,滚动条会覆 ...

  5. jquery插件写法

    //传统写法 //全局方法 ;(function($){ $.method = function(){ } //or $.obj = { method1:function(){}, method2:f ...

  6. Jquery插件写法及extentd函数

    JQuery插件写法 JQuery插件又分为类扩展方法和对象扩展方法两种,类插件是定义在JQuery命令空间的全局函数,直接通过可调用,如可调用,如可调用,如.ajax():对象插件是扩展JQuery ...

  7. jQuery 插件写法2

    转载:http://www.xuanfengge.com/jquery-plug-in-written-summary-and-summary-of-writing-object-oriented-m ...

  8. jQuery 插件写法

    一.jQuery插件的类型 1. jQuery方法 很大一部分的jQuery插件都是这种类型,由于此类插件是将对象方法封装起来,在jQuery选择器获取jQuery对象过程中进行操作,从而发挥jQue ...

  9. jquery组件WebUploader文件上传用法详解

    这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

随机推荐

  1. 在JBoss中部署GeoServer

    GeoServer一直就不能在 JBoss应用服务器中正常部署.最近我在一个国外的论坛上找到了该问题的解决方案.以下方法经测试,可以将GeoServer 2.1.3 成功部署在 JBoss 5.0 和 ...

  2. Java 加密 base64 encode

    版权声明:本文为博主原创文章,未经博主允许不得转载. [前言] 计算机中的数据都是二进制的,不管是字符串还是文件,而加密后的也是二进制的, 而我们要看到的往往是字符串,本文就介绍了将byte[]转为各 ...

  3. Java的JDBC事务详解(转)

    事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行. 2) 一致性(consistency):事务在完 ...

  4. JAVA 上加密算法的实现用例---转载

    通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快,破译极其困难.本文介绍了 MD5/SHA1,DSA,DESede/DES,Diffie-Hellman 的使用. 第 1 章基础知识 ...

  5. asp.net中ScriptManager自带Ajax与jQuery事件冲突

    问题引诉:最近在使用asp.net自带的无刷新提交ScriptManager时,发现一个问题,就是和我自己用jQuery写的一些事件函数和局部刷新相冲突.通过在网上收索,发现很多人都遇到这个同样的问题 ...

  6. 配置SSH免密码验证

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5183803. ...

  7. Papers

    Research on Semantic Text Mining Based on Domain Ontologyhttp://link.springer.com/chapter/10.1007/97 ...

  8. .NET下的加密解密大全(3):非对称加密

    本博文列出了.NET下常用的非对称加密算法,并将它们制作成小DEMO,希望能对大家有所帮助. RSA[csharp]static string EnRSA(string data,string pub ...

  9. LIB库加载方法-引用百度百科

    LIB库加载方法,有三种,如下: 1.LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中\"Add Files to Project\ ...

  10. js操作数据库实现注册和登陆

    自从node-js出现之后,不只是java,php等后端语言可以操作数据库,进行内容的增删改查,javascript简本语言同样具备了该项技能,而且在node下,js具备了很强的操作性和代码的阅读性, ...