清除Var或回调在Javascript中
问题描述:
对不起,我不知道我是否正确提问。当用户更改日期时,页面上的日期倒数会发生变化。如果日期多次更改,则会闪烁所有日期更改。我想它是存储以前的信息的地方。我已经尝试清除增值税。清除Var或回调在Javascript中
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");
}
}
});
});
});
答
每当您从#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);
});
});
底线:似乎专注(...)每次触发时都会添加一个新的countdown
。这可能是你遇到的问题。
不知道这是否有帮助? Lemme知道。
P.S. JSFiddle去吧:http://jsfiddle.net/PE9eW/
答
这个问题似乎与您正在使用在代码中闪烁的日期更改.countdown功能。当你将一个新的倒计数对象赋值给$(“。h”)时,插件或函数可能会为它分配一些事件处理程序或间隔,但是当它再次被调用时,它似乎不会清除旧的对象。为什么它会闪烁每个倒计时的所有日期。所以你必须手动完成。我不确定您使用的是外部插件还是您自己的功能,但您需要做的是在调用函数时清除分配给元素的现有事件或间隔。如果您告诉我您正在使用哪个插件,或者如果它是您自己的功能,则可以显示该代码,我可以更有帮助。 (指.countdown())
'ts'和'message_days'是全局变量。在第一次使用前添加**'var' **。 – c69 2012-04-06 19:51:34
@ c69谢谢,但是这并不能解决我的问题 – MHowey 2012-04-06 19:53:18
@Mhoow这就是为什么他在评论中写下它而不是回答。 – 2012-04-06 20:39:31