-
- 关于jQuery插件的分类、基本要点和闭包
苏州做网站 苏州网站设计 苏州网站建设 苏州网站推广 - 一、插件的种类编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期维护和提高开发效率。jQuery的插件主要分为3种类型。
1.封装对象方法的插件
这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery 对象进行操作,是最常见的一种 插 件。
据不完全统计,95%以上的jQuery 插件都是封装对象方法的插件。此类插件可以发挥出jQuery 选择器的强大优势。有相当一部分的jQuery 的方法,都是在jQuery 脚本库内部通过这种形式“插”在内核上的,例如parent0方法、appendTo0方法和addClass(方法等不少DOM操作方法。
有不少用户对jQuery没有提供color()方法而表示遗憾,不得不用csc("color")来代替。
2.封装全局函数的插件
可以将独立的面教加到jQuery命名空间之下。例如解决冲突用的jQuery.noConflict方法。常用的jquery.ajax()方法以及去除首位空格的jquery.trim()方法等,都是内部作为全局函数的插件附加到内核上去的。
3.选择器插件
个别情况下,会需要用到选择器插件。虽然jQuery的选择器十分强大,但还是会需要扩充一些自己喜欢的选择器,例如用color(red)来选择所有红色字的元素之类的想法。
二、 插件的基本要点
jQuery插件的文件名推荐命名为jguery.[{插件名}.js.以免和其他JavaSript 库插件混淆。例如命名为jquery.colorjs.
对有的对象方法都应当附加到jQuey.fn,的对象上,而所有的全局函数都应当附加到jQuery.fn对象本身上。
在插件内部,this指向的是当前通过选择器获取的jQuery对象,而不像一般的方法那样,例如click()方法,内部的this指向的是dom元素。
可以通过this.each 来遍历所有元素。
所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题,为了更稳,至可以在插件头都先加上一个分号,以免他人的不规范代码给插件带来影响。
插件应该返回一个jQuery对象,以保证插件的可链式操作。除非插件需要返回的是一些获取的量,例如字符串或者数组等。
避免在插件内部使用S作为jQuery对象的别名,而应使用完整的jQuery来表示。这样可以避免冲突。当然,也可以利用闭包这种技巧来回避这个问题,使插件内部继续使用S作为jQuery的别名。很多插件都是这么做的,本书也会利用这种形式。插件中的闭包
三、插件中的闭包
关于闭包,ECMAScript 对其进行了简单的描述: 允许使用内部函数(即函数定义和函数表达式位于另一个函数的函数体内),而且,这些内部函数可以访问它们所在的外部函数中声明的所有局
部变量、参数和声明的其他内部函数,当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。即内部函数会在外部函数返回后被执行。而当这个内部函数执行时,它仍然必须访问其外部函数的局部变量、参数以及其他内部函数。这些局部变量、参数和函数声明(最初时) 的值是外部函数返回时的值,但也会受到内部函数的影响。
利用闭包的特性,既可以避免内部临时变量影响全局空间,又可以在插件内部继续使用S作为
jQuery 的别名。常见的jQuery 插件都是以下这种形式的:
(function( ){
/*这里置放代码*/
})();
。先定义一个匿名函数function({这里置放代码})”,然后用括号拓起来,变成function(){这里置放代码}这种形式,最后通过()这个运算符来执行,可以传递参数进去,一共内部函数使用。
注意为了更好的兼容性,开始前有个分号
;(function($){//匿名函数的形参
})(jQvery);// /这里就将j0uery 作为实参传递给蛋
上段代码是一种常见的jQuery 插件的结构
- 上一篇: 怎么理解JavaScript、jQuery、AJAX、JSON它们之间有什么关系?
- 下一篇: 数据交互中常用的JQuery Ajax中的open()和send()方法
- 关于jQuery插件的分类、基本要点和闭包