jQuery 扩展功能
源码如下:
/*!
* 说明:Jquery库扩展
* 创建时间: leo 2016/10/13
*/ (function (window, jQuery, undefined) {
jQuery.extend({ /*日期时间处理*/
// data参数的格式为日期格式
date: {
// 添加/减去月份 num为正就是加 为负就是减
countMonth: function(date, num){
var oDate, oMonth, oDay;
oDate = new Date(date);
oDay = oDate.getDate();
oDate.setDate(1);
oDate.setMonth(oDate.getMonth() + num);
oMonth = oDate.getMonth() + 1;
oDay = $.date.getLastDay(oDate.getFullYear(), oDate.getMonth() + 1);
return oDate.getFullYear() + '-' + (oMonth < 10 ? '0' : '') + oMonth + '-' + (oDay < 10 ? '0' : '') + oDay;
}, // 获取最后一天
getLastDay: function(year, month){
var oDt;
oDt = new Date(year, month - 1, '01');
oDt.setDate(1);
oDt.setMonth(oDt.getMonth() + 1);
return new Date(oDt.getTime() - 1000*60*60*24).getDate();
}, // 计算 date1 - date2 得到相差天数
countDay: function (date1, date2) {
return parseInt(Math.abs(new Date(date1) - new Date(date2)) / 86400000); //把相差的毫秒数转换为天数
},
}, /*操作*/
do: {
// 指定 setTimeout 执行的次数 默认时间1秒 次数5次
setTimeoutWidthNum: function (fun, time = 1000, num = 5) {
if (fun != null) {
setTimeout(function () {
fun();
num --;
if (num > 0)
$.action.setTimeoutWidthNum(fun, time, num);
}, time);
}
}, // 处理多行文本溢出 末尾显示省略号 html布局限制
textOverflow: function (obj) {
var oH, oText;
oH = $(obj).height();
oText = $(obj).children();
while (oText.outerHeight() > oH) {
oText.html(oText.html().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
}
}, // 删除数组里某个元素
removeItem: function (arr, item) {
if (arr.length) {
var index = arr.indexOf(item);
if (index > -1) arr.splice(index, 1);
}
}
}, //定位
position: {
//使页面元素居中 isTure1代表是否左右居中 isTure2代表是否垂直居中 默认上下垂直居中
center: function (el, isTure1 = true, isTure2 = true) {
var obj = $(el);
if (obj.length > 0) {
obj.each(function () {
var _this, oW, oH;
_this = $(this);
oW = _this.width();
oH = _this.height();
_this.css('position', 'absolute');
if (isTure1) _this.css({ left: '50%', marginLeft: - oW / 2 });
if (isTure2) _this.css({ top: '50%', marginTop: - oH / 2 });
})
}
}
}, /*浏览器*/
browser: {
// 设置名称为name 值为value的Cookie value为空就移除Cookie 保存时间默认3天
setCookie: function (name, value, time = 3 * 24 * 60 * 60 * 1000) {
if (value == '') time = 0;
var expdate = new Date(); //初始化时间
expdate.setTime(expdate.getTime() + time); //时间
document.cookie = name + "=" + value + ";expires=" + expdate.toGMTString() + ";path=/";
}, // 获取cookie的value
getCookie: function (cookieName) {
var cookieValue, cookieStartAt, cookieEndAt;
cookieValue = document.cookie;
cookieStartAt = cookieValue.indexOf("" + cookieName + "=");
if (cookieStartAt == -1) cookieStartAt = cookieValue.indexOf(cookieName + "=");
if (cookieStartAt == -1) {
cookieValue = null;
}else {
cookieStartAt = cookieValue.indexOf("=", cookieStartAt) + 1;
cookieEndAt = cookieValue.indexOf(";", cookieStartAt);
if (cookieEndAt == -1) cookieEndAt = cookieValue.length;
cookieValue = unescape(cookieValue.substring(cookieStartAt, cookieEndAt));//解码latin-1
}
return cookieValue;
}, // 获取地址栏特定name的值
getUrlParam: function (name) {
var reg, oName;
reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
oName = window.location.search.substr(1).match(reg);
if (oName != null) return unescape(oName[2]);
return null;
}
},
})
})(window, jQuery)
countMonth 这个函数是为了处理项目中购买数据的时间段,其中用到的 getLastDay 函数是用来获取某年某月有多少天,比较巧妙的运用了setDate(1),然后setMonth()。setTimeoutWidthNum 函数使用了递归的用法,对于 textOverflow 方法可以参考 这里 ,
div 垂直居中是大部分页面弹窗的需求,所以就通过 center 函数把 css 样式,通过 js 赋给 div。Cookie 值的保存、获取、移除也是很多的登录页的需求。
引入时需要先引入jquery.js,例如:
<script type="text/javascript" src="jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="leo.js"></script>
使用时直接调用,例如:$.date.countMonth('2015,10,30', 4)等。
本人会持续更新,谢谢支持 \(^o^)/~
jQuery 扩展功能的更多相关文章
- jQuery && jEasyUI 扩展功能集合
jquery-extensions:jQuery && jEasyUI 扩展功能集合 该扩展功能基于 jQuery 1.9.x / 1.10.x / 1.11.x 和 jQuery E ...
- jQuery的动画以及扩展功能
动画DOM及CSS操作 自定义动画 animate(最终css状态,时间) 这个最终css状态是一个对象 <!DOCTYPE html> <html lang="en&qu ...
- jQuery 2.0.3 源码分析core - 整体架构
拜读一个开源框架,最想学到的就是设计的思想和实现的技巧. 废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过, 不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery ...
- 深入学习jQuery选择器系列第二篇——过滤选择器之子元素选择器
× 目录 [1]通用形式 [2]反向形式 [3]首尾元素 [4]唯一元素 前面的话 在上一篇中已经介绍过基础选择器和层级选择器,本文开始介绍过滤选择器.过滤选择器是jQuery选择器中最为庞大也是最为 ...
- 第 1 章 jQuery 入门
学习要点: 1.什么是 jQuery 2.学习 jQuery 的条件 3.jQuery 的版本 4.jQuery 的功能和优势 5.其他 JavaScript 库 6.是否兼容低版本 IE 7.下载及 ...
- (转)整体把握jQuery -jQuery 的原型关系图
整体把握jQuery -jQuery 的原型关系图 (原)http://www.html5cn.org/article-6529-1.html 2014-7-2 17:12| 发布者: html5cn ...
- jquery 甘特图开发指南
JQuery.Gantt是一个开源的基于JQuery库的用于实现甘特图效果的可扩展功能的JS组件库. <link rel="stylesheet" href="cs ...
- JS魔法堂:jQuery.Deferred(jQuery1.5-2.1)源码剖析
一.前言 jQuery.Deferred作为1.5的新特性出现在jQuery上,而jQuery.ajax函数也做了相应的调整.因此我们能如下的使用xhr请求调用,并实现事件处理函数晚绑定. var p ...
- 你可能不需要 jQuery!使用原生 JavaScript 进行开发
很多的 JavaScript 开发人员,包括我在内,都很喜欢 jQuery.因为它的简单,因为它有很多丰富的插件可供使用,和其它优秀的工具一样,jQuery 让我们开发人员能够更轻松的开发网站和 We ...
随机推荐
- Linux常用命令-入门
linux 开源安全性高 linux 和 windows 1.同时登陆多用户 2.安全 3.linux没有盘符的概念 /. / root 根目录 4.linux的文件没有扩展名 ...
- 20145317彭垚 《Java程序设计》第4周学习总结
20145317彭垚 <Java程序设计>第04周学习总结 20145317彭垚 <Java程序设计>第4周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行 ...
- 使用 Linux 搭建 VPN
http://blog.csdn.net/catoop/article/details/7537012 VPN服务器的配置与应用 实验场景 通过将Linux配置VPN服务器允许远程计算机能够访问内网. ...
- Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control
网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比 ...
- 设置session失效时间
以X5部署在Tomcat上为例,说明如何设置session失效时间. 可以设置session失效时间的地点有三处,分别是 1.BusinessServer的session设置 \runtime\Bus ...
- 浮动以后父DIV包不住子DIV解决方案
转载自http://blog.sina.com.cn/s/blog_6c363acf0100v4cz.html 当DIV1里面嵌套有一个DIV2,当DIV2设置了浮动,那么DIV1是无法被撑开的,也就 ...
- SQL Server 触发器【转】
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
- 权限管理:(RBAC)
一般做正规的权限管理程序基本就是以下M表模式: 例1:在页面显示管理者的权限,并可以修改的管理界面 数据库表如下: 管理界面(附ajax): <body> <?php include ...
- 透明、圆角、阴影效果、背景色渐变、<a></a>去外层虚线、!!!表格标签<table>
表格标签 <table> 代表表格 width:指表格的宽度 一种是像素 (浏览器缩小的时候出现滚动条) 一种是百分比(跟着浏览器的大小而大小) b ...
- JS时间戳格式化日期时间 由于mysql数据库里面存储时间存的是时间戳,取出来之后,JS要格式化一下显示。
//时间戳转时间 function RiQi(sj) { var now = new Date(sj*1000); var year=now.getFullYear(); var month=now. ...