我的问题在这里是我想避免调用JavaScript函数一段时间后(比如5秒后)。javascript避免多次呼叫
我创建了一个链接,它调用javascript函数。如果用户双击它被称为两次我想避免这种情况。
谢谢,德万·奈尔
我的问题在这里是我想避免调用JavaScript函数一段时间后(比如5秒后)。javascript避免多次呼叫
我创建了一个链接,它调用javascript函数。如果用户双击它被称为两次我想避免这种情况。
谢谢,德万·奈尔
我认为处理,最明智的办法是,一旦它被点击禁用链接,然后重新启用它,当函数完成运行。假设你有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;
}
}
}());
这种事情通常是在尽管服务器处理,因为客户端脚本不是特别可靠的 - 你不能保证迪利将实施,不管你用什么策略。
我正在使用标记来调用该函数。我认为标签没有禁用属性。如我错了请纠正我。 – Devan 2011-05-03 06:23:00
@Devan;编辑我的答案,希望有所帮助! – goggin13 2011-05-03 06:30:27