Подтвердить что ты не робот

Чтобы отменить вызов функции 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?

4b9b3361

Ответ 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)