Почему эта функция JavaScript работает без того, чтобы быть названным?

$(document).ready(SetupButtonClicks());

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff());
}

function DoPHPStuff() {
    //stuff
}

У меня есть этот код в моем файле JavaScript, когда я отлаживаю его, я вижу, что он звонит SetupButtonClicks() как он должен, но после этого делаться, это звонит DoPHPStuff(). DoPHPStuff() должен только быть назван когда btnJavaPHP нажат. Что я делаю неправильно?

5
задан jamone 2 July 2010 в 14:57
поделиться

4 ответа

Измените функцию SetupButtonClicks:

$('#btnJavaPHP').click(DoHPStuff);

То, как она у вас закодирована, говорит Javascript, чтобы вызвать функцию, а не использовать ее в качестве обработчика "клика". Круглые скобки - это оператор, который вызывает функцию.

17
ответ дан 18 December 2019 в 06:21
поделиться

Удалите () .

Написав $ (document) .ready (SetupButtonClicks ()) , вы вызываете SetupButtonClicks и передаете его возвращаемое значение в готово .
Точно так же, написав $ ('# btnJavaPHP'). Click (DoPHPStuff ()) , вы вызываете DoPHPStuff (немедленно) и передаете все, что возвращает, в щелкните () .

Вам необходимо передать сами функции, написав $ (document) .ready (SetupButtonClicks) и $ ('# btnJavaPHP'). Click (DoPHPStuff) .

3
ответ дан 18 December 2019 в 06:21
поделиться

За исключением объявления функции, пара круглые скобки после идентификатора функции вызывают выполнение функции. Примеры:

// function declaration; function not executed
function SetupButtonClicks() {

}

// function executed
SetupButtonClicks();

// function not executed
SetupButtonClicks;
2
ответ дан 18 December 2019 в 06:21
поделиться
function DoPHPStuff() {
    //stuff
}

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff);
}

$(document).ready(SetupButtonClicks);    
3
ответ дан 18 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: