// 倒计时
// 在元素上增加个自定义属性data-time,值为当前时间,结束时间,下面的js中会以逗号分割两个时间
// 需要一个函数形参来处理结果,该函数的this指向的是HTML元素,并将要更新的倒计时结果传给该函数
$.fn.countDown = function(_fn){
this.each(function(){
var $t = $(this),
// 当前时间(服务器输出)
curr_time = $t.attr("data-time").split(",")[0]*1000,
// 结束时间
end_time = $t.attr("data-time").split(",")[1]*1000;
_updateEndTime();
function _updateEndTime(){
var lag = (end_time - curr_time)/1000, // 当前时间和结束时间之间的秒数
second = _preZero( Math.floor(lag % 60) ),
minite = _preZero( Math.floor((lag / 60) % 60) ),
hour = _preZero( Math.floor((lag / 3600) % 24) ),
day = _preZero( Math.floor((lag / 3600) / 24) );
if(lag > 0){
curr_time += 1000;
setTimeout(_updateEndTime,1000);
}
var res = {d:day,h:hour,m:minite,s:second};
var end = true;
for (var k in res) {
if (+res[k] <= 0 || isNaN(+res[k])) {
res[k] = 0;
} else {
end = false;
}
}
res.end = end;
_fn.call($t,res);
}
function _preZero(n){
return n < 10 ? "0" + n : n;
}
});
}