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 ...
随机推荐
- 【IOS笔记】Views
Views Because view objects are the main way your application interacts with the user, they have many ...
- 20145317彭垚 《Java程序设计》第8周学习总结
20145317彭垚 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 1.NIO的定义 InputStream.OutputStream的输入输出,基本上是以字节为单位进行 ...
- MySQL字段之集合(set)枚举(enum)
MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it 分类:MySQL 集合 SET mysql> create table jihe(f1 ...
- Java保留两位小数的几种做法
1. String类型数字始终保留两位小数 , RoundingMode.HALF_UP); return bd.toString(); } /** * 使用DecimalFormat,保留小数点后 ...
- java effective 读书笔记
java effective 读书笔记 []创建和销毁对象 静态工厂方法 就是“封装了底层 暴露出一个访问接口 ” 门面模式 多参数时 用构建器,就是用个内部类 再让内部类提供构造好的对象 枚举 si ...
- sql CRUD 增删改查复习汇总
1.创建数据库create database 数据库名称删除数据库drop database 数据库名称2.创建表create table 表名( 列名 类型(长度) 自增长 主键 非空,)自增 ...
- 兼容IE的CSS的”引入方式“
1.给IE浏览器的7版本来提供需要引用的样式(如果把7去掉则给所有的IE浏览器提供样式) <!--[if IE 7]> <Link type="text/css" ...
- Maven实战(三)Eclipse构建Maven项目
1. 安装m2eclipse插件 要用Eclipse构建Maven项目,我们需要先安装meeclipse插件 点击eclipse菜单栏Help->Eclipse Marketplac ...
- [LeetCode]题解(python):081 - Search in Rotated Sorted Array II
题目来源 https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ Follow up for "Search in ...
- spring的cronExpression
CronExpression_CronExpression 规则 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 ...