javascript避免多次调用
我这里的问题是我想避免在调用javascript函数后的一段时间内(比如5秒后)调用它 我创建了一个链接,它调用javascript函数。如果用户双击它两次,我希望避免这种情况 谢谢,javascript避免多次调用,javascript,function,Javascript,Function,我这里的问题是我想避免在调用javascript函数后的一段时间内(比如5秒后)调用它 我创建了一个链接,它调用javascript函数。如果用户双击它两次,我希望避免这种情况 谢谢, Devan我认为最明智的处理方法是在单击链接后禁用它,然后在函数运行完毕后重新启用它。假设您有可用的jQuery,比如 $('#button').click(function () { $(this).attr("disabled", "true"); doTheFunction(); $(this)
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将得到实现。我使用标记来调用函数。我认为标签没有禁用属性。如果我错了,请纠正我。