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 ...
随机推荐
- TeamViewer“试用期已到期”解决方法
今天打开TeamViewer,显示试用期已到期,不能远程至其它电脑上.软件重装也没用,因为它与你的机器及网卡做了绑定. 查看网上资料,发现需要删除注册信息等操作才能继续使用,步骤如下: 说明:操作前, ...
- laravel 外键schema RBAC
$table->bigIncrements('id') ; Incrementing ID (primary key) using a " UNSIGNED BIG INTEGE ...
- Law of total probability
https://en.wikipedia.org/wiki/Law_of_total_probability the total probability of an outcome which can ...
- 更新Delphi中SVN客户端版本的方法
Delphi从XE以后集成里SVN客户端, 安装完Delphi以后, 在bin\subversion下, 存放的就是SVN客户端文件, 可惜版本有点低(好像是1.7的) 如果想更新成高版本的客户端文件 ...
- BLE-NRF51822教程-RSSI获取
当手机和设备连接上后,设备端可以通过获取RSSI,在一定程度上判断手机离设备的相对距离的远近. 获取函数很简单直接调用sd_ble_gap_rssi_get 接口函数就行了,传入连接句柄和buff就能 ...
- WGZX:javaScript 学习心得--1
标签: javascriptiframedreamweaver浏览器htmltable 2008-09-11 10:50 1071人阅读 评论(0) 收藏 举报 分类: UI(21) 1,docu ...
- centos 重启php-fpm
centos 重启php-fpm ps -ef | grep php-fpm 查看php-fpm的配置文件,然后从配置文件查看php-fpm的pid文件,然后, kill -SIGUSR2 `cat ...
- win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://goldlion.blog.51cto.com/4127613/834075 引子 ...
- SQL Server数据库连接字符串的组成
DB驱动程序常见的驱动程序如下: ODBC ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Servic ...
- 超级管理员登录后如果连续XX分钟没有操作再次操作需要重新登录
首先在设置session页面时 session_start(); session("name",$adminname); //加入session时间 time() session( ...