javascript - 清除 Javascript 中的 Var 或回调

标签 javascript jquery callback

抱歉,我不确定我问的问题是否正确。当用户更改日期时,页面上的日期倒计时会发生变化。如果日期更改不止一次,它会闪烁所有日期更改。我猜它是将以前的信息存储在某处。我试过清除变量。

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 中“focusout”时,您都会将一个 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。这可能是您遇到的问题。

不确定这是否有帮助?让我知道。

附言JSFiddle 与它一起去:http://jsfiddle.net/PE9eW/

关于javascript - 清除 Javascript 中的 Var 或回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10048504/

相关文章:

javascript - 使用 jquery 保留之前的突出显示

jquery - 从 javascript 调用 VB.net 函数

javascript - jQuery - 设置附加数量限制

javascript - 当我追加新的 div 时,警报不会被触发

javascript - 检查 JavaScript setTimeout 是否已触发

javascript - Json 到 Jquery 数据表

c++ - 函数指针和回调函数定义示例

javascript - 如何访问 initConfig 中设置的 grunt 任务的回调

javascript - 使用 Javascript/classic-ASP 将 XML 导出到 Excel 电子表格

javascript - 如何将任意网页的原始 html 下载到 Javascript 字符串中?