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>

  

jquery的封装与对象学习的更多相关文章

  1. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  2. jQuery的deferred对象学习

    #copy { background-color: lightgreen; padding: 15px; margin: 10px } 一.deferred对象简介 deferred对象是jquery ...

  3. jQuery事件与事件对象

    事件是脚本编程的灵魂,本篇来介绍jQuery中的事件处理及事件对象. 事件与事件对象 首先,我们来看一下经常使用的添加事件的方式: <input type="button" ...

  4. (转载)jQuery 1.6 源码学习(一)——core.js[1]之基本架构

    在网上下了一个jQuery 1.2.6的源码分析教程,看得似懂非懂,于是还是去github上下载源码,然后慢慢看源代码学习,首先来说说core.js这个核心文件吧. jQuery整体的基本架构说起来也 ...

  5. jQuery回调、递延对象总结(上篇)—— jQuery.Callbacks

    前言: 作为参数传递给另一个函数执行的函数我们称为回调函数,那么该回调又是否是异步的呢,何谓异步,如:作为事件处理器,或作为参数传递给 (setTimeout,setInterval)这样的异步函数, ...

  6. ajax请求原理及jquery $.ajax封装全解析

    .ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得 ...

  7. jquery简单封装

    对Raphael画图标的一个jquery简单封装 公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封 ...

  8. 【jQuery】jquery插件封装

    扩展jQuery插件开发的基本知识,最佳做法和常见的陷阱. 入门 编写一个jQuery插件开始于给jQuery.fn加入​​新的功能属性,此处添加的对象属性的名称就是你插件的名称: jQuery.fn ...

  9. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

随机推荐

  1. Excel VBA: 自动生成巡检报表并通过邮件定时发送

    目录 环境说明逻辑结构效果说明及截图①.安装SecureCRT②. 自动巡检脚本③. 数据检索并FTP传送④. 安装Excel 2013⑤. 安装Serv-U⑥. 自动生成图表并邮件发送 环境说明 系 ...

  2. ELF文件之九——使用链接脚本-2个函数-data-bss-temp-call-debug信息-struct

    main.c int enable; ; struct aaa { int membera; char memberb; }s_aaa; int main() { int temp; add(); d ...

  3. HDU 1042 大数阶乘

    B - 2 Time Limit:5000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  4. python3配置阿里云短信服务

    1.申请阿里云短信服务,具体步骤看我的python2-Django配置短信服务 2.安装依赖 aliyun-python-sdk-core-v3 aliyun-python-sdk-dysmsapi= ...

  5. python 安装自己下载的whl依赖

    下载好之后保存到相应的地方,如下载了xxxx.whl文件并将它保存在D:\python\project目录下,然后 pip install  D:\python\project\xxxx.whl即可

  6. Navicat 导入数据时报Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误

    今天重装了个系统,装好MySQL和Navicat之后导入SQL时报了Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误, 查了资料说是m ...

  7. docker部署带mysql数据库连接的.netcore程序

    docker部署带mysql数据库连接的程序和部署普通的程序完全一致 数据库可以是物理机删的mysql,同时也可以是docker里的mysql. 如果是docker中的mysql,配置连接字符串和物理 ...

  8. iOS9下的Map Kit View下的使用

    最近有个任务是关于地理位置上的标注开发,经过一些资料的查找和对比,现总结一些经验,给读者也是给自己. iOS9下的Map Kit View实际是以前MapKit,只不过换了一个名字,实际是指同一个UI ...

  9. vscode安装使用

    1.新建文件:cmd+n2.设置默认浏览器: https://blog.csdn.net/zSY_snake/article/details/83449571 3.view in browser不支持 ...

  10. Java Lamada

    Collection: ->stream:返回一个以 colleciotn 元素为数据源的数据流. -->map: 入参 Function 对象,将此流中的元素依次作用于传入的 Funct ...