• jQuery插件的怎么写


    对于jQuery之前一直用,也看到过别人写的插件,直到最近才想着学习怎么写自己的jQuery插件,今天看了网上的一些资料,发现其实很简单的。

    先看一个简单的jQuery插件的例子

    <script>

    (function($){ $.fn.extend({ "bold":function(){ return this.css({fontWeight:"bold"}); }, "red":function(){ return this.css({color:"red"}); } }); })(jQuery);

    </script>

    使用的时候要先导入jquery插件,比如$("p").bold().red(),这样p标签内容就会变为红色粗体。

    那么,如何写一个正确的jQuery的插件呢?

    首先,插件的结构是这样的

    (function($){

    })(jQuery);

    这种结构在javascript中叫做闭包,能够不被编译器执行。

    然后,在闭包中写插件的功能,有两种写法

    第一种:就是上面例子中的,这种适合写有多个函数的插件,例子中的bold和red就是定义的两个插件的名字。

    第二种:

        (function($){
                
            jQuery.fn.bold=function(){
                        return this.css({fontWeight:"bold"});
                    };
            jQuery.fn.red=function(){
                return this.css({"color":"red"});
            }
    
            })(jQuery);

    可以看做是定义了两个函数,分别是bold和red。

    jQuery.extend()的介绍和使用

    注意,区别于上面的jQuery.fn.extend()。

    jQuery.extend()有几个重载方法

    一、jQuery.extend(desc,src1,src2,src3...)

    用来把后面的参数src1、src2。。合并到desc中,比如

    var src1={name:petty,age:20}
    var src2={name:tim,sex:female}
    var desc={name:tom}
    var result=jQuery.extend(desc,src1,src2),

    结果result={name:tim,age:20,sex:female},同时desc也变为合并后的值,也就是说如果后面的参数和前面的参数有相同的属性值,则后面的属性会覆盖前面的属性。有时候我们不希望改变desc的值,则可以用{}代替desc,

    jQuery.extend({},src1,src2,...)

        上述的extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将该src合并到调用extend方法的对象中去,如:
       $.extend(src)
       该方法就是将src合并到jquery的全局对象中去,如:

     $.extend({
    hello:function(){alert('hello');}
    });

    二、jQuery.extend(boolean,desc,src1,src2...)

    第一个boolean为布尔值,意为是否深度覆盖,后面的参数与上面的一致。所谓深度覆盖,看下面的例子。

    var result=jQuery.extend(true,{},
    {name:tim,size:{20,length:30}},
    {name:cat,age:20,size:{10,height:50})

    则结果为result={name:cat,age:20,size:{10,length:30,height:50}}

    如果第一个参数为false,则结果应该是这样result={name:cat,age:20,size:{10,height:50}}

    下面是一个较完整的例子

        <script type="text/javascript">
            (function($){
            jQuery.fn.bold=function(options){
                var result=jQuery.extend(defaults,options);
                        return this.css({fontWeight:result.fontWeight});
                    };
            jQuery.fn.color=function(options){
                var result=jQuery.extend(defaults,options);
                return this.css({"color":result.color});
            };
            
            var defaults={
                    fontWeight:"bold",
                    color:"green"
            };
    
            })(jQuery);
        
        $(function(){
                var options={
                        color:"red"
                };
            $("p").bold().color(options);
        });
        </script>

     

  • 相关阅读:
    6:定位锚点透明
    5:CSS元素类型
    4、css盒模型和文本溢出
    3、CSS属性组成和作用
    Linq to Xml读取复杂xml(带命名空间)
    经典语句
    服务器不能设置内容类型HTTP头信息后发送
    vs2015 VS-Visual Studio-IIS Express 支持局域网访问
    Mysql一些常用语句
    swfupload上传图片
  • 原文地址:https://www.cnblogs.com/yxjdragon/p/5974342.html
Copyright © 2020-2023  润新知