博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery插件开发
阅读量:6708 次
发布时间:2019-06-25

本文共 2497 字,大约阅读时间需要 8 分钟。

jQuery插件的开发包括两种:

一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就两种函数的开发做详细的说明。

1、类级别的插件开发-为jQuery添加静态方法

类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。关于类级别的插件开发可以采用如下几种形式进行扩展:

1.1 添加一个新的全局函数

添加一个全局函数,我们只需如下定义:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              jQuery插件开发                          

1.2 增加多个全局函数

添加多个全局函数,可采用如下定义:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              jQuery插件开发                          

1.3 使用jQuery.extend(object); 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              jQuery插件开发                          

1.4 使用命名空间

虽然在jQuery命名空间中,我们禁止使用了大量的javaScript函数名和变量名。但是仍然不可避免某些函数或变量名将于其他jQuery插件冲突,因此我们习惯将一些方法封装到另一个自定义的命名空间。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              jQuery插件开发                          

通过这个技巧(使用独立的插件名),我们可以避免命名空间内函数的冲突。

2、对象级别的插件开发-给jQuery对象添加方法

对象级别的插件开发需要如下的两种形式:、
形式1:

(function($){      $.fn.extend({         pluginName:function(opt, callback){            // Our plugin implementation code goes here.           }      })   })(jQuery);

形式2:

(function($) {        $.fn.pluginName = function() {         // Our plugin implementation code goes here.      };   })(jQuery);

上面定义了一个jQuery函数,形参是$,函数定义完成之后,把jQuery这个实参传递进去。立即调用执行。这样的好处是,我们在写jQuery插件时,也可以使用$这个别名,而不会与prototype引起冲突。例如:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>              jQuery插件开发                          

注意:

这里使用了闭包的方式

(function($) {   // Code})(jQuery);

上面的代码等价于下面的代码

var jQueryFucntion=function($) {   // Code} jQueryFucntion(jQuery);

这样定义之后,很大程序上毕免了第三方的误操作,从而破坏封装性。如比较常见的场景就是防止'$'与其它js库的冲突。

 

 

 

 

 

 

 

转载地址:http://xenlo.baihongyu.com/

你可能感兴趣的文章
来自社区的Visual Studio Code使用体验和教程
查看>>
高效运维最佳实践:如何做好On-call和事故响应?
查看>>
利用Scikit-Learn和Spark预测Airbnb的listing价格
查看>>
数据建模NoSQL数据库的概念和对象建模符号
查看>>
微软宣布Azure Function支持Python
查看>>
3·15曝光丨智能机器人一年拨打40亿个骚扰电话,6亿人信息已遭泄露!
查看>>
ArchSummit深圳2016大会7折售票最后一周
查看>>
2019年React学习路线图
查看>>
Google Docs API正式可用,可自动化文档任务和内容管理
查看>>
全面了解大数据“三驾马车”的开源实现
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
人工智能白热化,运维脱帽“背锅侠”
查看>>
Android中使PopupWindow显示在指定控件的上下左右!
查看>>
html中ul标签的优化
查看>>
Kurento安装与入门05——One to many video call
查看>>
[deviceone开发]-cnodejs论坛移动端App
查看>>
智能指针shared_ptr(effective modern c++笔记)
查看>>
Failed to validate a newly established connection异常
查看>>
关联对象 AssociatedObject 完全解析
查看>>
Windows下80端口被pid为4的System进程占用解决方法
查看>>