Чтобы отменить вызов функции JavaScript с помощью jQuery
JavaScript:
$(document).ready(function(){
function sample() {
alert("This is sample function");
}
$("#button").click(function(){
t = setTimeout("sample()",2000);
});
});
HTML:
<input type="button" id="button" value="Call sample function with delay">
Как только я нажимаю кнопку, функция sample()
не вызывается с задержкой в 2 секунды. Я не знаю, что случилось.
Как вызвать функцию JavaScript с помощью setTimeout()
через jQuery?
Ответы
Ответ 1
Поскольку вы объявляете sample
внутри анонимной функции, вы переходите к ready
, она привязана к этой функции.
Затем вы передаете строку setTimeout
, которая eval
ed через 2 секунды. Это происходит за пределами текущего объема, поэтому он не может найти функцию.
Передавать только функции setTimeout
, использование eval неэффективно и трудно отлаживать.
setTimeout(sample,2000)
Ответ 2
function sample() {
alert("This is sample function");
}
$(function() {
$("#button").click(function() {
setTimeout(sample, 2000);
});
});
jsFiddle.
Если вы хотите инкапсулировать sample()
, оберните все это в функцию самозапуска (function() { ... })()
.
Ответ 3
Очень просто, просто вызовите функцию в пределах определенного количества миллисекунд, используя setTimeout()
setTimeout(myFunction, 2000)
function myFunction() {
alert('Was called after 2 seconds');
}
Или вы можете даже инициировать функцию внутри таймаута, например:
setTimeout(function() {
alert('Was called after 2 seconds');
}, 2000)