jQuery插件教程

jQuery插件的分类

jQuery插件有不少,有UI类,表单验证,输入类,特效类,Ajax类,滑动类,导航类,工具类,动画类等等。css

jQuery的插件主要分为三类:jquery

一、封装对象方法的插件:也就是基于某个DOM元素的jQuery对象,局部性
二、封装全局函数的插件:将独立的函数添加到jquery的命名空间之下。jquery.trim()就是jquery内部做为全局函数的插件添加到内核上去的。
三、选择器插件:扩充本身喜欢的一些选择器。相似于.toggle()

插件的基本要点

1. 插件的文件名推荐为 jquery.[插件名].js,例如jquery.validate.js
 2. 全部的对象方法都应当附加到jQuery.fn对象上,而全部的全局函数都应当附加到jQuery对象自己上
 3. 在插件内部,this指向的是当前经过选择器获取的jQuery对象,而不像通常的方法那样,例如click()方法,内部的this指向的是DOM元素
 4. 能够经过this.each来遍历全部元素
 5. 全部的方法或函数插件,都应当以分号结尾,不然压缩时可能出问题,有的为了更加稳妥些,在插件的开始处加上一个分号
 6. 插件应该返回一个jQuery对象,这样能够保证插件的可链式操做。除非插件须要返回的是一些须要获取的量,例如字符串或者数组等
 7. 尽可能利用闭包技巧从来避免变量名的冲突
 8. 引入的自定义插件必须在jQuery库后面

插件开发方式

jQuery插件开发方式主要有三种:segmentfault

经过$.extend()来扩展jQuery
经过$.fn 向jQuery添加新的方法
经过$.widget()应用jQuery UI的部件工厂方式建立

一般咱们使用第二种方法来进行简单插件开发,而第一种方法是在jQuery命名空间上添加了一个静态方法,并不能让咱们选中DOM元素,而后再调用该方法。而第三种并不经常使用,也较为复杂数组

插件的结构

在开始编写jQuery插件时,咱们有必要了解一下插件的基本结构,全部的jQuery插件都声明为jQuery.fn对象的方法:闭包

jQuery.fn.showPlugin = function () {
      //code here
};

咱们使用以下代码使用插件:app

$("#plugin").showPlugin();

这里,我并无使用$,这是为了不命名冲突,若是要用 $ 的话,能够像下面这样把插件代码封装在一个自执行的匿名函数中,而后传入参数jQuery框架

(function($){
    jQuery.fn.showPlugin = function () {
        //code here
    };
})(jQUery);

$.extend

.extend()容许你使用一个或多个对象扩展基准对象,扩展的方式是依序将右边的对象合并到基准对象(左边第一个对象)。函数

;(function($){
    $.extend({
        'nav' : function () {

        }
    })
})(jQuery);

咱们经过以下方法使用该全局方法:工具

$.nav();

前面(见:浅析jQuery总体框架与实现(上))咱们说过,$.extend是全局性的,而$.fn.extend是局部性的,前面之因此要加分号是由于为了防止在此以前引入的js文件没有加分号字体

$.fn.myPlugin = function() {
    //在这里面,this指的是用jQuery选中的元素
    //example :$('a'),则this=$('a')
    this.css('color', 'red');
}

this指代jQuery选择器返回的集合。在插件里的this,通过了一些封装处理,this就是表示jQuery对象。而不须要再次使用$()进行包装了

链式调用

要让插件实现链式调用只须要return该对象便可:

$.fn.myPlugin = function() {
    this.css('color', 'red');
    return this.each(function() {
        //对每一个元素进行操做
        $(this).append(' ' + $(this).attr('href'));
    }))
}

使用return this.each(function () {} 这样就实现了咱们的链式操做。

接收多个参数

$.fn.myPlugin = function(options) {    //常常用options表示有多个参数。
    var defaults = {
        'color': 'red',
        'fontSize': '12px'
    };
    var settings = $.extend(defaults, options);
    return this.css({
        'color': settings.color,
        'fontSize': settings.fontSize
    });
}

调用时,字体大小会运用插件里的默认值:

$('a').myPlugin({
    'color': '#2C9929'
});
相关文章
相关标签/搜索