杀掉不需要的超时?

时间:2013-06-10 00:36:25

标签: jquery

基本上我做了一个运气旋转游戏。

当您点击按钮ID“提交”时,它将执行以下操作:

function loadLuck() {
    $("#luck").html('<img src="http://i.imgur.com/HSIICHd.gif" /> Please wait...');

    setTimeout(function() {
        $.post('ajax.php', {getLuck : '1'}, function(data) {
            $("#luck").html(data);
        });
    }, 1500);
}

基本上从php页面加载结果。

但如果我多次点击它,它会产生新的结果,与我完成的点击次数相同。

多数民众赞成,因为超时已经确定。

我怎样才能每次启用1次超时?

2 个答案:

答案 0 :(得分:2)

使用clearTimeout功能:

var timeoutID = '';

function loadLuck() {
    clearTimeout(timeoutID);
    $("#luck").html('<img src="http://i.imgur.com/HSIICHd.gif" /> Please wait...');
    timeoutID = setTimeout(function() {
        $.post('ajax.php', {getLuck : '1'}, function(data) {
            $("#luck").html(data);
        });
    }, 1500);
}

答案 1 :(得分:1)

您可以使用“去抖动”功能(例如this one)。

function loadLuck() {
  // ...
}
$('.loadLuck').click($.debounce(loadLuck, 1500));