$(document).ready(SetupButtonClicks());
function SetupButtonClicks() {
$('#btnJavaPHP').click(DoPHPStuff());
}
function DoPHPStuff() {
//stuff
}
У меня есть этот код в моем файле JavaScript, когда я отлаживаю его, я вижу, что он звонит SetupButtonClicks()
как он должен, но после этого делаться, это звонит DoPHPStuff()
. DoPHPStuff()
должен только быть назван когда btnJavaPHP
нажат. Что я делаю неправильно?
Измените функцию SetupButtonClicks:
$('#btnJavaPHP').click(DoHPStuff);
То, как она у вас закодирована, говорит Javascript, чтобы вызвать функцию, а не использовать ее в качестве обработчика "клика". Круглые скобки - это оператор, который вызывает функцию.
Удалите ()
.
Написав $ (document) .ready (SetupButtonClicks ())
, вы вызываете SetupButtonClicks
и передаете его возвращаемое значение в готово
.
Точно так же, написав $ ('# btnJavaPHP'). Click (DoPHPStuff ())
, вы вызываете DoPHPStuff
(немедленно) и передаете все, что возвращает, в щелкните ()
.
Вам необходимо передать сами функции, написав $ (document) .ready (SetupButtonClicks)
и $ ('# btnJavaPHP'). Click (DoPHPStuff)
.
За исключением объявления функции, пара круглые скобки после идентификатора функции вызывают выполнение функции. Примеры:
// function declaration; function not executed
function SetupButtonClicks() {
}
// function executed
SetupButtonClicks();
// function not executed
SetupButtonClicks;
function DoPHPStuff() {
//stuff
}
function SetupButtonClicks() {
$('#btnJavaPHP').click(DoPHPStuff);
}
$(document).ready(SetupButtonClicks);