抱歉,我不确定我是否正确地提出了这个问题。当用户更改日期时,页面上的日期倒计时会发生变化。如果日期更改多次,则会闪烁所有日期更改。我想它是在某处存储以前的信息。我试过清除变种。
var deal_yeax = '';
正如我在php中所做的那样没有运气
$('#deal_end').focusout(function() {
var deal_end = $("#deal_end").val();
var array = deal_end .split('-');
var deal_montx = array[0];
var deal_dax = array[1];
var deal_yeax = array[2];
deal_montx = deal_montx - 1;
$(function(){
ts = new Date(deal_yeax , deal_montx , deal_dax );
$(".h").countdown({
timestamp : ts,
callback : function(days, hours, minutes, seconds){
message_days = (days);
var message_hours = (hours);
$(".message_hours").text(message_hours + " Hours");
var message_minutes = (minutes);
$(".message_minutes").text(message_minutes + " Minutes");
var message_seconds = (seconds);
// Creat the display
if ( message_days < 1 && message_hours < 1 ) { $(".message_seconds").text(message_seconds + " Seconds"); }
else if ( message_days < 1 && message_hours > 1 ) { }
else if ( message_days == 1 ) { $(".message_days").text(message_days + " Day"); }
else { $(".message_days").text(message_days + " Days"); }
if ( message_days < 1 && message_hours < 1 && message_minutes < 1 && seconds < 1 ) {
$(".hide_my_buy_button").fadeOut("fast");
}
}
});
});
});
答案 0 :(得分:3)
每当您从#deal_end
“关注”时,您都会将countdown
事件附加到.h
。不知道countdown(...)
究竟是如何工作的(如果你提供源代码就好了,我们可以提供更多的帮助!),解决这个问题的一种方法可能是使用JQuery的unbind(...)
函数来删除现有的监听器在事件上添加新事件之前。
以下是该问题的一个示例:
<!-- HTML -->
<div>
<input id="text" />
<button id="clicker" />
</div>
<!-- Javascript -->
$('#text').focusout(function() {
var text = this.value;
// Everytime #text is "focused out", a new event is registered with #clicker.
$('#clicker').click(function() {
console.log('Value: ' + text);
});
});
......这里是如何解决问题的方法(这只是众多方式中的一种。这种方式可能不是最优雅的,但无论如何。)
$('#text').focusout(function() {
var text = this.value;
$('#clicker').unbind('click');
// Everytime #text is "focused out", a new event is registered with #clicker.
$('#clicker').click(function() {
console.log('Value: ' + text);
});
});
底线:似乎focusout(...)每次触发时都会添加一个新的countdown
。这可能是你遇到的问题。
不确定这是否有帮助? Lemme知道。
P.S。 JSFiddle:http://jsfiddle.net/PE9eW/
答案 1 :(得分:1)
问题似乎与您在代码中使用的.countdown函数一起闪现日期更改。当你将一个新的倒计时对象分配给$(“。h”)时,插件或函数可能会为它分配一些事件处理程序或间隔,但是当它再次被调用时似乎没有清除旧的那个,那就是为什么它会闪烁每个倒计时的所有日期。所以你必须手动完成。我不确定您是使用外部插件还是您自己的功能,但您需要做的是清除调用该功能时分配给元素的现有事件或间隔。如果你告诉我你正在使用哪个插件,或者如果它是你自己的功能可能会显示代码,我会更有帮助。 (指.countdown())