zoukankan      html  css  js  c++  java
  • jquery的封装与对象学习

    1、封装学习

    /// <reference path="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" />
    
    //简单的函数封装
    $.extend({
        sayHello: function (name) {
            $("body").html('Hello,' + (name ? name : 'Dude') + '!');
        }
    })
    
    //使用$.fn方式  其中this = $('a'),代表jquery选择器选中的元素
    $.fn.Test = function () {
        return this.html("$.fn.zsw.Test");
    }
    
    //使用$.fn方式,带参数
    $.fn.ParasTest = function (options) {
        var defaults = {
            name: "zsw"
        };
    
        //$.extend 第一个参数代表合并到一个新的空对象上,以保护原始数据
        var setOptions = $.extend({}, defaults, options);
    
        return this.html("$.fn.zsw.Test 参数:" + setOptions.name);
    
    };
    
    /*
    复杂点的
    1、构造函数
    2、方法
    3、注入jquery
    ***************************************/
    //创建构造函数
    var InitName = function (ele, opt) {
        this.$ele = ele,
        this.defaults = {
            name: "zsw"
        },
        this.options = $.extend({}, this.defaults, opt);
    }
    
    //增加方法
    InitName.prototype = {
        AddHtml: function () {
            return this.$ele.html(this.options.name);
        }
    }
    
    //注入
    $.fn.MyName = function (options) {
        var initName = new InitName(this, options);
        return initName.AddHtml();
    }
    
    //将插件内容包含在命名空间中,前面加分号是因为如果前面的内容没有加分号会影响插件
    ; (function () {
        var InitName = function (ele, opt) {
            this.$ele = ele,
            this.defaults = {
                name: "zsw02"
            },
            this.options = $.extend({}, this.defaults, opt);
        }
    
        //增加方法
        InitName.prototype = {
            AddHtml: function () {
                return this.$ele.html(this.options.name);
            }
        }
    
        //注入
        $.fn.MyName02 = function (options) {
            var initName = new InitName(this, options);
            return initName.AddHtml();
        }
    })();
    
    //将系统变量以参数的形式传入,可以稍微提升速度
    ; (function ($, window, docment, undefined) {
        //注入
        $.fn.MyName03 = function (options) {
            var InitName = function (ele, opt) {
                this.$ele = ele,
                this.defaults = {
                    name: "zsw03"
                },
                this.options = $.extend({}, this.defaults, opt);
            }
    
            //增加方法
            InitName.prototype = {
                AddHtml: function () {
                    return this.$ele.html(this.options.name);
                }
            }
    
            var initName = new InitName(this, options);
            return initName.AddHtml();
        }
    })($, window, document)
    
    
    //匿名对象方式
    ; (function ($, window, docment, undefined) {
        $.fn.MyName04 = function (options) {
            var Name = {
                Init: function (ele, opt) {
                    this.$ele = ele,
                    this.defaults = {
                        name: "zsw04"
                    },
                    this.options = $.extend({}, this.defaults, opt);
                },
                Addhtml: function () {
                    return this.$ele.html(this.options.name);
                }
            }
            Name.Init(this, options);
    
            return Name.Addhtml();
        }
    })($, window, document)
    //匿名函数封装2
    ; (function ($, window, docment, undefined) {
        $.fn.Zsw = function (options) {
            var t = this;
            var Name = {
                Init: function (ele, opt) {
                    this.$ele = ele,
                    this.defaults = {
                        name: "zsw05"
                    },
                    this.options = $.extend({}, this.defaults, opt);
                },
                Addhtml: function () {
                    return this.$ele.html(this.options.name);
                },
                ShowHtml: function () {
                    Name.Init(t, options);
                    Name.Addhtml();
                }
            }
            return Name.ShowHtml();
        };
    })($, window, document)

    //调用
    /$.sayHello();
        //$("body").Test();
        //$("body").ParasTest();
        //$("body").ParasTest({ name: "aaa" });
        //$("body").MyName();
        //$("body").MyName02();
        //$("body").MyName03();
        //$("body").MyName04();
        $("body").Zsw();

    2、对象的封装——日历(没有任何功能,纯输出格式)

    <script>
        var Canledar = {
            IsRunN: function (year) {
                if (year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)) {
                    return true;
                }
                else {
                    return false;
                }
            },
            GetWeek: function (date) {
                var week = date.getDay();
                return week;
            },
            GetMonthDay: function (date) {
                var monthDay = 0;
                switch (date.getMonth() + 1) {
                    case 1: monthDay = 31; break;
                    case 2:
                        if (Canledar.IsRunN(date.getFullYear())) { monthDay = 29; }
                        else { monthDay = 28; }
                        break;
                    case 3: monthDay = 31; break;
                    case 4: monthDay = 30; break;
                    case 5: monthDay = 31; break;
                    case 6: monthDay = 30; break;
                    case 7: monthDay = 31; break;
                    case 8: monthDay = 31; break;
                    case 9: monthDay = 30; break;
                    case 10: monthDay = 31; break;
                    case 11: monthDay = 30; break;
                    case 12: monthDay = 31; break;
                }
                return monthDay;
            },
            ToFormat: function (date) {
                return new SimpleDateFormat(Canledar.Format).format(date)
            },
            Week: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
            DateNote: ["年", "月", "日"],
            FormatDate: "yyyy-MM-dd",
            FormatTime: "HH:mm:ss",
            CreateHtml: function (date, options) {
                var opt = $.extend({},Canledar,options)
    
                var strDate = "<div><span><</span><em>" + date.getFullYear() + opt.DateNote[0] + (date.getMonth() + 1) + opt.DateNote[1] + date.getDate() + opt.DateNote[2] + "</em><span>></span></div>";
                strDate += "<table>";
                strDate += "<tr><th>" + opt.Week[0] + "</th><th>" + opt.Week[1] + "</th><th>" + opt.Week[2] + "</th><th>" + opt.Week[3] + "</th><th>" + opt.Week[4] + "</th><th>" + opt.Week[5] + "</th><th>" + opt.Week[6] + "</th></tr>";
                strDate += "<tr>";
                for (var i = 1; i <= Canledar.GetWeek(date) ; i++) {
                    strDate += "<td></td>";
                }
    
                for (var i = 0 ; i < Canledar.GetMonthDay(date) ; i++) {
                    //alert((i + Canledar.GetWeek(date)) % 7)
                    if (((i + Canledar.GetWeek(date)) % 7) == 0) {
                        strDate += "</tr><tr>"
                    }
                    strDate += "<td>" + (i + 1) + "</td>";
                }
    
                var lastDayWeek = Canledar.GetWeek(new Date(date, Canledar.GetMonthDay(date) * (1000 * 60 * 60 * 24)));
                for (var i = 7; i > lastDayWeek ; i--) {
                    strDate += "<td></td>";
                }
    
                strDate += "</tr>";
    
                strDate += "</table>";
                console.log(strDate);
                return strDate;
            }
        };
    
        $(function () {
            $("#can").html(Canledar.CreateHtml(new Date(), {Week:["日","一","二","三","四","五","六"]}));
        })
    </script>
    

      

    岁月无情催人老,请珍爱生命,远离代码!!!
  • 相关阅读:
    Yii框架(一)
    phpStorm中使用xdebug断点调试php代码
    在mysql存储过程中拼接sql解决in的字段类型不匹配问题
    openjdk源码阅读导航
    深入理解tomcat9---源码构建
    API权限控制与安全管理
    java虚拟机性能监控调优及原则
    java十年技术栈[总结复习用]
    spring boot配置文件application.propertis
    php危险的函数和类 disable_functions/class
  • 原文地址:https://www.cnblogs.com/zhoushangwu/p/8109183.html
Copyright © 2011-2022 走看看