时间倒计时插件

 1 $.fn.genTimer = function (e) {
 2     function u(e) {
 3     var t = Math.floor(e / n),
 4         r = Math.floor((e - t * n) / 36e5),
 5         i = Math.floor((e - t * n - r * 1e3 * 60 * 60) / 6e4),
 6         s = Math.floor((e - t * n - r * 1e3 * 60 * 60 - i * 1e3 * 60) / 1e3);
 7     return {
 8         hours: ("0" + r).slice(-2),
 9         minutes: ("0" + i).slice(-2),
10         seconds: ("0" + s).slice(-2),
11         dates: t
12     }
13     }
14     if (this.data("handled")) return this;
15     this.data("handled", !0);
16     var t = {
17     beginTime: new Date,
18     day_label: "day",
19     days_label: "days",
20     unitWord: {
21         hours: ":",
22         minutes: ":",
23         seconds: ""
24     },
25     type: "",
26     callbackOnlyDatas: !1
27     },
28     n = 864e5,
29     r = $.extend({}, t, e),
30     i = this;
31     r.targetTime = r.targetTime.replace(/\-/g, "/");
32     r.targetTime = isNaN(r.targetTime) ? r.targetTime : parseInt(r.targetTime);
33     var s = new Date(r.targetTime) - new Date(r.beginTime),
34     o = function () {
35         if (s < 0) {
36         r.callback.call(i, r.callbackOnlyDatas ? {
37             hours: "00",
38             minutes: "00",
39             seconds: "00",
40             dates: 0
41         } : "00" + r.unitWord.hours + "00" + r.unitWord.minutes + "00");
42         clearInterval(i.interval)
43         } else {
44         var e = u(s);
45         if (r.callbackOnlyDatas) r.callback.call(i, e);
46         else if (r.type == "day") {
47             s >= n * 2 ?
48             r.callback.call(i, '<span class="day_count">' + e.dates + '</span><span class="day">' + r.days_label + '</span><span class="day_seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
49             : (
50             s >= n ?
51             r.callback.call(i, '<span class="day_count">' + e.dates + '</span><span class="day">' + r.day_label + '</span><span class="day_seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
52             : r.callback.call(i, '<span class="seconds">' + e.hours + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
53             );
54         }
55         else if (r.type == "diffNoDay") {
56             var t = e.hours;
57             s >= n && (t = Number(e.dates * 24) + Number(e.hours));
58             r.callback.call(i, '<span class="hours">' + t + '</span><span class="miniutes">' + r.unitWord.hours + e.minutes + '</span><span class="senconds">' + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
59         } else if (r.type == "split") {
60             r.callback.call(i, '<span class="day_count" id="d">' + e.dates + '</span><span class="hour" id="h">' + e.hours + '</span><span class="minute" id="m">' + e.minutes + '</span><span class="second" id="s">' + e.seconds + '</span>');
61         } else {
62             var t = e.hours;
63             s >= n && (t = Number(e.dates * 24) + Number(e.hours));
64             r.callback.call(i, '<span class="seconds">' + t + r.unitWord.hours + e.minutes + r.unitWord.minutes + e.seconds + r.unitWord.seconds + "</span>")
65         }
66         }
67         s -= 1e3
68     };
69     i.interval = setInterval(o, 1e3);
70     o();
71     return this
72 };

 

posted @ 2015-11-11 10:45  落叶风行  阅读(192)  评论(0)    收藏  举报