zoukankan      html  css  js  c++  java
  • JQuery插件实现

    我们实现的一些独立的功能,可以写成jQuery插件的形式封装起来,不仅可以在其它地方使用这个功能,还可以用jquery链式调用。

    1、关系:

    jQuery.fn = jQuery.prototype 即jQuery对象的原型,

    jQuery.fn.extend(object)就是扩展jQuery对象的原型方法。

    $.extend(object) 可以理解为JQuery 添加一个静态方法。

    $.fn.extend(object) 可以理解为JQuery实例添加一个方法。

    2、$.extend()重载覆盖默认参数

    $.extend()重载版本:jQuery.extend([deep], target, object1, [objectN]),用一个或多个其他对象来扩展一个对象,返回被扩展的对象。

    一般用来在编写插件时用自定义插件参数去覆盖插件的默认参数。var opts = $.extend({}, defaults, option);

    3、jQuery.fn.extend(object)封装插件步骤:

      1、使用自执行的匿名函数创建私有作用域,使外部的代码不能直接访问插件内部的代码。插件内部的代码不污染全局变量。 

      (function ($) { })(window.jQuery);
    

       2、在jQuery.fn.extend(object)上添加拓展方法

    复制代码
    //闭包限定命名空间
    (function ($) {
        $.fn.extend({
            "highLight":function(options){
                //do something
            }
        });
    })(window.jQuery);

      3、实现功能,定义默认参数

    复制代码
    //闭包限定命名空间
    (function ($) {
        $.fn.extend({
            "highLight": function (options) {
                var opts = $.extend({}, defaluts, options); //使用jQuery.extend 覆盖插件默认参数
                return this.each(function () {  //这里的this 就是 jQuery对象, return返回jQuery对象,为了支持链式调用
                    //遍历所有的要高亮的dom,当调用 highLight()插件的是一个集合的时候。
                    var $this = $(this); //获取当前dom 的 jQuery对象,这里的this是当前循环的dom
                    //根据参数来设置 dom的样式
                    $this.css({
                        backgroundColor: opts.background,
                        color: opts.foreground
                    });
                });
    
            }
        });
        //默认参数
        var defaluts = {
            foreground: 'red',
            background: 'yellow'
        };
    })(window.jQuery);

    以上三步便可以制作出一个基础的jQuery插件。jQuery的基本格式

      4、如果有需求的话还可以暴露公共方法 给别人来扩展你的插件

    //公共的格式化 方法. 默认是加粗,用户可以通过覆盖该方法达到不同的格式化效果。

    $.fn.highLight.format = function (str) { return "<strong>" + str + "</strong>"; }

       5、还可以定义插件的私有方法、供插件内部使用,比如检查传入参数是否规范

    //私有方法,检测参数是否合法 
    function isValid(options) { return !options || (options && typeof options === "object") ? true : false; }

    加上上面两步便可以封装一个较完善的jQuery插件。

  • 相关阅读:
    ckeditor 上传图片
    过滤html else <p>
    目录遍历
    android小知识之SparseArray(HaspMap替换)
    android小知识之邮箱地址输入自动完成
    android小知识之EditText输入框之值监控以及类型限制(数字,英语字母,下划线,是否为星号密码)
    android小知识之圆角ListView
    android小知识之多个listview在同一界面只有item高亮
    如何取消一个本地svn目录与svn的联系(即恢复原有图标等)
    android小知识之意图(intent)
  • 原文地址:https://www.cnblogs.com/chenzechuang/p/6635544.html
Copyright © 2011-2022 走看看