先来看demo:http://codepen.io/jonechen/pen/xOgZMz

插件代码:

;
(function($) {
var Calendar = function(ele, options) {
this.ele = ele;
this.opt = options;
this.defaults = {
color: 'blue',
fontsize: '14px',
}
this.obj = $.extend({}, this.defaults, this.opt);
};
Calendar.prototype = {
init: function() {
return this.ele.on("focus", function() {
createEle($(this))
});
}
};
var currentDate = new Date();
var currentYear = currentDate.getFullYear();
var currentMonth = currentDate.getMonth(); function createEle(ele) {
var $parent = ele.parent();
if (!$parent || $parent[0].tagName == "BODY") {
throw "Error: this parent() is not defined";
return
} else {
ele.css("border", "1px solid red");
$parent.css({
padding: 0,
margin: 0,
position: 'relative',
});
if ($("#week").length == 0) {
$parent.append("<div id='week'><h1><span class=\'prev\'><</span><span class=\'content\'>1</span><span class=\'next\'>></span></h1></div>");
$parent.find("#week").css({
position: "absolute",
left: 0,
top: ele.outerHeight(true),
zIndex: 1000,
background: "#fff"
})
weeklist($parent.find("h1"));
var $week = ele.next();
updateDate(currentMonth, $week); //传参数月份
$week.find(".prev").click(function() {
updateDate(--currentMonth, $week);
});
$week.find(".next").click(function() {
updateDate(++currentMonth, $week);
});
}
}
} function weeklist(ele) {
if (ele.parents($("#week")).find("ul:eq(0)").length == 0) {
ele.after('<ul></ul>');
var weekText = ['日', '一', '二', '三', '四', '五', '六'];
for (var i = 0; i < 7; i++) {
ele.next().append('<li>' + weekText[i] + '</li>')
}
ele.next().after('<ul class=\'calendarList\'></ul>');
}
} function updateDate(m, obj) {
var activeDate = new Date(currentYear, m, 1); //外面传进来的不断变化的日期对象
var year = activeDate.getFullYear();
var month = activeDate.getMonth();
obj.find(".content").html(year + '年' + (month + 1) + '月');
var $calendarList = obj.find($(".calendarList"));
$calendarList.html("")
var n = 1 - activeDate.getDay();
if (n == 1) {
n = -6;
}
activeDate.setDate(n);
for (var i = 0; i < 42; i++) {
var date = activeDate.getDate();
$calendarList.append('<li>' + date + '</li>');
var $li = $calendarList.find("li");
if (activeDate.getMonth() != month) {
$li.eq(i).css("color", "#ccc");
}
$li.eq(i).attr('data-time', year + "-" + (activeDate.getMonth() + 1) + "-" + date);
$li.eq(i).click(function(event) {
obj.prev().val($(this).attr('data-time'));
obj.prev().css('borderColor', '#ccc')
obj.remove();
});
activeDate.setDate(date + 1);
}
}
$.fn.calendar = function(options) {
var calendares = new Calendar(this, options);
return calendares.init();
}
})(jQuery)

插件调用:

$("#ele").calendar();

jQuery简单日历插件版的更多相关文章

  1. 一款简洁大气的jquery日期日历插件

    本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址:http://keleyi.com/a/bjad/em ...

  2. 【UI插件】开发一个简单日历插件(上)

    前言 最近开始整理我们的单页应用框架了,虽然可能比不上MVVM模式的开发效率,也可能没有Backbone框架模块清晰,但是好歹也是自己开发出来 而且也用于了这么多频道的东西,如果没有总结,没有整理,没 ...

  3. 基于jQuery的日历插件

    上个星期看到同事做一个有关日历提醒功能的需求,为了找个插件也是费了不少心思,然后刚好有时间就试着写了一个简单demo 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制 ...

  4. 简单日历插件jquery.date_input.pack

    html: <link rel="stylesheet" type="text/css" href="css/jquery.date_input ...

  5. jQuery简单倒计时插件

    一. 效果预览 二. 实现 1. 按照特定的类结构布局. 2. 需要先引入jQuery,再引入此文件. /** * Author: CC11001100 * * 简单倒计时 * * 1. 支持页面内同 ...

  6. jquery简单的插件

    $(function() { $.fn.插件名称 = function(options) { var defaults = { Event : "click", //触发响应事件 ...

  7. jquery简单切换插件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  8. jquery dataTimePicker日历插件(精确到小时)

    效果图:      下载地址:https://github.com/WangChangyao/jquery-dataTimePicker.git <!DOCTYPE html> <h ...

  9. jQuery插件之——简单日历

    最近在研究js插件的开发,以前看大神们,对插件都是信手拈来,随便玩弄,感觉自己要是达到那种水平就好了,就开始自己研究插件开发了.研究了一段时间之后,就开始写了自己的第一个日历插件,由于是初学插件开发, ...

随机推荐

  1. java实现屏幕共享的小程序

          最近在做软件软件工程的课程设计,做一个用于实验室的屏幕监控系统,参考各种前人代码,最后领悟之后要转换自己的代码,初学者都是这样模仿过来的.       说到屏幕监控系统,有教师断和学生端, ...

  2. lintcode-144-交错正负数

    144-交错正负数 给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组. 注意事项 不需要保持正整数或者负整数原来的顺序. 样例 给出数组[-1, -2, -3, 4, 5, 6],重新 ...

  3. using指令含义

    using指令作用: 就是导入命名空间,这样你比如用StringBuilder类,就不用System.Text.StringBuilder builder = new System.Text.Stri ...

  4. 织梦CMS建站入门学习(二)

    织梦建站的数据库设计: 1.模型表:根据网站的需求,建立不同的数据模型,如:文章浏览,软件下载,视频观看等等. 2.栏目表:根据网站的需求,建立不同的栏目,每一个栏目选择一个数据模型. 3.内容主表: ...

  5. Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"

    (1) 网上下载了一个android应用:死活用不了,查了以下,原来是android studio版本不对,于是把android studio的版本从2.2 升级到3.0,后来发现没法升级,只能下载, ...

  6. 【Python】Python中的引用和赋值

    本文转自:http://my.oschina.net/leejun2005/blog/145911 在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针 ...

  7. mysql(一) 关联查询的方式

    mysql做关联查询时,一般使用join....on.....的语法. 但还有其它两种语法形式,三者的主要区别在于书写形式,其余方面并无太多差异. 如下三种形式: select * from trad ...

  8. table中的td限制宽度width也不能让字符过长变成省略号生效?

    table中的td限制宽度width也不能让字符过长变成省略号生效? http://blog.csdn.net/java_mr_zheng/article/details/49423247 CSS t ...

  9. 【Asp.Net】IIS应用程序池添加ASP.NET v4.0

    可能在安装.NET Framewrok 4.0之前,IIS就已经装好了,结果在IIS的应用程序池中只有.NET 2.0的Classic .NET AppPool和DefaultAppPool.在使用v ...

  10. RT-thread内核之事件

    一.事件控制块:在include/rtdef.h中 #ifdef RT_USING_EVENT /** * flag defintions in event */ #define RT_EVENT_F ...