javascript避免多次调用

javascript避免多次调用,javascript,function,Javascript,Function,我这里的问题是我想避免在调用javascript函数后的一段时间内(比如5秒后)调用它 我创建了一个链接,它调用javascript函数。如果用户双击它两次,我希望避免这种情况 谢谢, Devan我认为最明智的处理方法是在单击链接后禁用它,然后在函数运行完毕后重新启用它。假设您有可用的jQuery,比如 $('#button').click(function () { $(this).attr("disabled", "true"); doTheFunction(); $(this)

我这里的问题是我想避免在调用javascript函数后的一段时间内(比如5秒后)调用它

我创建了一个链接,它调用javascript函数。如果用户双击它两次,我希望避免这种情况

谢谢,
Devan

我认为最明智的处理方法是在单击链接后禁用它,然后在函数运行完毕后重新启用它。假设您有可用的jQuery,比如

$('#button').click(function () {
  $(this).attr("disabled", "true");
  doTheFunction();
  $(this).attr("disabled", "false");
});
如果调用函数后确实需要等待设定的时间,则可以使用setTimeout重新启用按钮

$('#button').click(function () {
  $(this).attr("disabled", "true");
  doTheFunction();
  var btn = $(this);
  setTimeout(function () {
    btn.attr("disabled", "false");
  }, 5000);  // reenable the button 5 seconds later
});
编辑:(针对下面的评论)

对于链接,我将通过添加和删除一个类来模拟上述情况,因为您是对的,没有禁用的属性

$('#link').click(function () {
  if ($(this).hasClass('disabled_link')) {
    return;
  }
  $(this).addClass("disabled_link");
  doTheFunction();
  var link = $(this);
  setTimeout(function () {
    link.removeClass("disabled_link");
  }, 5000);  // reenable the button 5 seconds later
});

由于您使用的是链接,而不是按钮,也不是jQuery(显然),下面介绍如何在函数被调用并执行某项操作后,将其停止执行任何操作5秒钟(或您希望的任何延迟):

var someFn = (function() {

  var lastCalled;

  return function() {
    var now = new Date();
    var limit = 5000; // minimum milliseconds between calls

    if (!lastCalled || (now - lastCalled) > limit) {
      lastCalled = now;
      // do stuff
      alert('hey');
    } else {
      return;
    }
  }
}());
不过,这类事情通常是在服务器上处理的,因为客户端脚本并不特别可靠-无论您使用何种策略,您都无法保证dealy将得到实现。

我使用标记来调用函数。我认为标签没有禁用属性。如果我错了,请纠正我。