zoukankan      html  css  js  c++  java
  • 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]

    1.表单验证插件Validation
     
    2.表单插件Form
     
    3.动态事件绑定插件livequery
    可以为后来的元素绑定事件
     
    类似于jQuery中的live()方法
     
     
    4.jQuery UI
     
    5.jQuery Cookie
     
    6.遮罩层插件:thickbox
     
    7.编写jQuery插件
    <1>编写插件的目的:给已经有的一些列方法或函数做一个封装,一遍在其他地方使用,方便后期维护和提高开发效率。
     
    <2>三种类型的插件
    a:封装对象方法的插件  jQuery.fn.extend()
    b:封装全局函数的插件  jQuery.extend()
    c:选择器插件  jQuery.extend()
     
    <3>插件内部的this指向的是jQuery对象,而不是DOM对象。
     
    8.对于
    的补充。
     
    <1>插件的基本要点
     
    <2>jQuery.extend()方法处理可以用于扩展jQuery对象之外,还有一个强大的功能,就是用于扩展已有的Object对象。
    例如:
    var settings={va: false, li: 5, name:"foo"};
    var options={va: true, name:"bar"};
    var newSet=jQuery.extend(settings,options);
     
    结果:
    newSet={va: true, li: 5, name:"bar"};
     
    所以:jQuery.extend()方法经常被用于设置插件方法的一系列默认参数。
    例子:
    function foo(options){
        options=jQuery.extend({
            name:"bar",
            length:5,
            dataType:"xml"
        },options);
    }
    <2>封装方法的插件使用
    例子:写color插件。
    1.js文件命名:jQuery.color.js
     
    2.格式
    ;(function($){
     
    })(jQuery);
     
    3.由于是封装方法的插件使用:jQuery.fn.extend()
    ;(function($){
        $.fn.extend({
            "color":function(value){
                
            }
        })
    })(jQuery);
     
    4.this的可链式调用性
    ;(function($){
        $.fn.extend({
            "color":function(value){
                  return this.css("color",value);    //为了可链式调用,返回this
            }
        })
    })(jQuery);
    5.两个功能:设置与获取color
    ;(function($){
        $.fn.extend({
            "color":function(value){
                if(value==undefined){
                  return this.css("color");    //为了可链式调用,返回this
                )else{
                    return this.css("color",value); 
                }
            }
        })
    })(jQuery);
     
    6.插件提升
    a:由于css方法本身具有返回第一个匹配元素的功能,所以不需要使用eq()来获取第一个元素
    b:由于css方法内部已经有判断value是否为undefined的机制,所以可以省略if
    最终:
    ;(function($){
        $.fn.extend({
            "color":function(value){
                    return this.css("color",value); 
            }
        })
    })(jQuery);
     
    7.实际使用:
    <script>
       
    ;(function($){
        $.fn.extend({
            "color":function(value){
                    return this.css("color",value); 
            }
        })
    })(jQuery);
        
    //应用
    $(function(){
        alert($("div").color());    //获取第一个color
         $("div").color("red");    //设置所有的div的color为red
    })
     
    </script>
    8.插件扩展:如果要定义一组插件可以这么写
    ;(function($){
        $.fn.extend({
            "color":function(value){
                    
            },
           “border”:function(value){
            
            },
            ...
        })
    })(jQuery);
     
    9.注意:jQuery选择符可能会匹配多个元素,可以在插件内部调用each()方法来遍历匹配元素。
    如:
    ;(function($){
        $.fn.extend({
            "color":function(value){
                    return this.each(function(){
                        
                })
            }
        })
    })(jQuery);
     
    <3>封装全局函数的插件使用
    例子:去除左侧和右侧的空格
    ;(function($){
        $.extend({
            ltrim:function(text){
                    return (text || "").replace(/^s+/g,"");
            },
            
            rtrim:function(text){
                    return (text || "").replace(/^s+$/g,"");
            }
        
        })
    })(jQuery);
     
    //调用
    $("div").val(
        jQuery.ltrim("      text        ")
    )
     
     
    <4>选择器插件
    $("div:gt(1)")
     
    jQuery中的源码是
    gt:function(a,i,m){
        return i>m[3]-0;
    }
    有三个参数:a,i,m
     
     
        
     
     
  • 相关阅读:
    SpringBoot实现原理
    常见Http状态码大全
    forward(转发)和redirect(重定向)有什么区别
    1094. Car Pooling (M)
    0980. Unique Paths III (H)
    1291. Sequential Digits (M)
    0121. Best Time to Buy and Sell Stock (E)
    1041. Robot Bounded In Circle (M)
    0421. Maximum XOR of Two Numbers in an Array (M)
    0216. Combination Sum III (M)
  • 原文地址:https://www.cnblogs.com/zqzjs/p/4943617.html
Copyright © 2011-2022 走看看