**JQuery实际上就是一个封装操作DOM的对象。
JQuery插件实际上就是扩展JQuery这个对象(实例或者本身),增加用户自己的方法。**
1. 扩展JQuery本身
JQuery提供.extend()方法来对自身进行扩展。

$.extend( { say : function() {
    return "roddy";
} } );

// 使用
console.log( $.say() );

// 输出:
// "roddy"

对JQuery自身扩展一个.say()方法。

2. 扩展JQuery实例
JQuery提供.fn.extend()方法来扩展JQuery实例对象

$.fn.extend( { changeColor : function() {
    $( this ).style.color = "red";
} } );

// 使用
$( "span" ).changeColor();

3. 扩展写法

( function( $ ) {

    // 插件默认配置
    var defaultOptions = {
        property1 : "value1",
        property2 : "value2",
        ...
    };

    // 插件构造函数
    function userPlug( element, options ) {
        // jQuery实例对象
        this.$ele = $( element );
        // 合并用户配置和默认配置
        this.options = $.extend( defatuleOptions, options, true );
        // 插件初始化
        this.init( this );
    }

    // 插件原型
    userPlug.prototype = {
        // 插件初始化函数
        init : function( self ) {
            // 插件的主要实现代码
            // 可以通过self.options进行配置或者修改
            // 然后给self.$ele绑定事件处理函数等
        }
    }

    // 绑定插件
    $.fn.userplug = function( options ) {
        return this.each( function() {
            if( !$.data( this, 'userplug' ) ) {
                $.data( this, 'userplug', new userPlug( this, options ) );
            }
        } );
    }
} )( window.jQuery );

4. 使用插件

<script src="//cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script>
<script src="userPlug.js"></script>
<script> $( "div" ).userplug( [options] ); </script>

敏小静
55 声望3 粉丝

前端工程师


引用和评论

0 条评论