详解jQuery插件开发方式


Posted in Javascript onNovember 22, 2016

jQuery插件开发 

一般来说,jQuery插件的开发分为两种:一种是挂在jQuery命名空间下的全局函数,也可称为静态方法;另一种是jQuery对象级别的方法,即挂在jQuery原型下的方法,这样通过选择器获取的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来看看:

详解jQuery插件开发方式

上面的写法等同于:

$.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的私有函数目前允许的插件内部使用。

 以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
innerText和innerHTML 一些问题分析
May 18 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
Chosen 基于jquery的选择框插件使用方法
May 30 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
利用CDN加速react webpack打包后的文件详解
Feb 22 Javascript
微信小程序多音频播放进度条问题
Aug 28 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
AngularJS中isolate scope的用法分析
Nov 22 #Javascript
详解js界面跳转与值传递
Nov 22 #Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 #Javascript
JavaScript面向对象分层思维全面解析
Nov 22 #Javascript
浅析location.href跨窗口调用函数
Nov 22 #Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
You might like
PHP 5.0 Pear安装方法
2006/12/06 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
jQuery知识点整理
2015/01/30 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
利用Python开发实现简单的记事本
2016/11/15 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
HTML5新增的表单元素和属性实例解析
2014/07/07 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
实习单位推荐信范文
2013/11/27 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
机关搬迁方案
2014/05/18 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript