zoukankan      html  css  js  c++  java
  • Jquery插件开发

    Query插件的开发包括两种:

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

     

    一添加新的全局函数

    测试

    $(function () {
        $.first();
        $.second('second');
        $.a();
        $.b();
        $.zjy.fxx('fusfcsdfk');
    });

    $.first = function () {
        alert('first');
    }
    //输入参数的情况
    $.second = function (param) {
        alert(param);
    }

    //同时添加多个全局函数
    $.extend({
        a: function () { alert('a'); },
        b: function () { alert('b'); }
    });
    //给全局函数添加命名空间的情况,避免函数名称重复
    $.zjy = {
    fxx : function (param) {
        alert(param);
    }
    }

    对象级别的插件开发

    参考资料

    http://docs.jquery.com/Plugins/Authoring

    http://www.learningjquery.com/2007/10/a-plugin-development-pattern

     

     

    //a1是页面的dom元素的id

    $.fn.plguName=function(){};这就是插件的开发的模式,

    还有一种闭包模式,这个模式可能更好的避免冲突。

    (function($){})(jQuery)

     


    第一个例子

    $.fn.high=function()

    {

      this.html('this is jquery html');//改变调用这个插件的dom元素的html内容,在方法体里面this已经是jquery元素了不用再写$(this).

    }

     

    第二个例子,输入参数。这个模式基本也是jquery的模式,其中defaults是默认参数,options是调用时候传入的参数。

    使用一个options对象可以避免出现多个形参,书写复杂,都包装在一个options中。

    var opts = $.extend(defaults, options);这行代码,是使用defaults对象重载组合options对象,如果defaults对象中已经有某个属性,options当中也有一个同样的属性,那么会使用options属性。如果一个属性中defaults没有,options中有,也会合并到defaults。 或者说最后生成一个新对象opts


    $.fn.high = function (options) {
        var defaults = {
            foreground: "red",
            background: "blue"
        };
        var opts = $.extend(defaults, options);
        alert(opts.foreground);
        alert(opts.title);
        this.html('jquery 插件 html');
    }

    调用代码

    $(function () {
        $("#a1").high({foreground:"abc",title:"hello"});
    })

    会发现alert出来,abc,hello

     

    第三个列子,公开插件的默认配置

     

    在第二个例子中high插件有个内部的配置defaults,这个配置是已经插件内部写好的,如果要修改必须修改整个插件,而且配置是插件私有的,外部不能访问设置。第三个例子提供插件公开内部配置的方法,可以更简单快捷的修改插件的默认配置,

    第二个例子中,defaults写在插件high内部,这次我们要把defaults当作high的属性写在外面。

    $.fn.high = function (options) {
        var opts = $.extend({}, $.fn.high.defaults, options);//第一个参数是空对象
        alert(opts.foreground);
        alert(opts.title);
        this.html('jquery 插件 html');
    }
    $.fn.high.defaults = {
        foreground:'red',
        background:'blue'
    };

    //调用代码

    $(function () {
        $.fn.high.defaults.foreground = 'yellow';
        $("#a1").high({ title: 'abc' });
    });

    会弹出yellow,abc

     

    /*************************

    这个方法也提供另外一个方式来为插件做开发,使用其他插件开发自己的插件,在自己的插件方法中可以调用其他已经写好的插件。

    比如有个插件给字体颜色加黑

    $.fn.high.format = function (txt) {
        return '<b>' + txt + '</b>';
    }

    就可以在$.fn.high插件中调用$.fun.high.format这个插件。

    $.fn.high = function (options) {

        var opts = $.extend({}, $.fn.high.defaults, options);
        alert(opts.foreground);
        alert(opts.title);

        this.html('jquery 插件 html');
        var temp = $.fn.high.format(this.html());
        this.html(temp);
    }


    关于闭包的用途

     

    (function($){})(jQuery) 这是闭包的开发代码模式

    闭包的最大用途在于私有化,保护私有方法,属性等。防止本来只是让插件自己调用的方法被用户调用,如果用户调用了插件专用的方法,肯定需要做更多的处理。

    代码示例

    (function ($) {
        $.fn.high = function (options) {
        this.html('jquery 插件 html');
        debug();
    }
        function debug()
        {
            alert('do something');
        }
    })(jQuery)

    这个代码中debug方法只能插件high使用,外部用户是调用不了的

     

    /****************************

    如果插件中dom元素要使用debug方法,必须使用jquery 绑定事件的方式来使用这个方法,不能使用html标签上添加事件的方法

     


    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    在vue.js中mixin和页面执行顺序问题
    【转载】Node.js 教程(菜鸟教程系列)
    【转载】一致性hash算法释义
    多线程还是多进程的选择及区别
    腾讯
    gdb命令与调试方法
    面试题56:链表中环的入口节点
    面试题52:缺少i的乘积数组
    UML类图
    面试题51:数组中重复的数字
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319274.html
Copyright © 2011-2022 走看看