Я искал здесь множество мест, и я не смог найти свою ситуацию, так что здесь.
Я пытаюсь избежать использования html inline onclick, поэтому при этом я использую jquery click() так же
$(document).ready(function(){
$("#start").click(game());
});
Когда я использую это, функция game() запускается автоматически и запускается только и время загрузки.
Если я использую inline onclick, он работает только тогда, когда я нажимаю, и он работает каждый раз, когда я нажимаю. Почему это?
Редактировать.. Клянусь, я пробовал это... ну, это сработало !!!
Вы вызываете функцию game()
и передаете ее результат в .click()
. Поскольку его результат (предположительно) не является функцией, на которой вы фактически не настроили обработчик кликов. Вам нужно передать ссылку на функцию, поэтому удалите круглые скобки:
$("#start").click(game);
Вы немедленно выполняете game()
, добавляя скобки. Если вы хотите, чтобы game
оценивалась по клику, вам нужно
$(document).ready(function(){
$("#start").click(game);
});
Вам нужно изменить его на это:
$("#start").click(game);
Всегда более целесообразно использовать .on & анонимную функцию, так как она принимает путаницы, подобные этим из изображения;
$(document).ready(function() {
$('#start').on('click', function () {
game();
});
}
);
То, что вы делаете, будет похоже на
$(document).ready(function() {
$('#start').on('click', function () {
game();
}());
}
);
Вы можете использовать функцию jquery в элементе html.
<canvas id="game" onclick="jqueryFunction()"></canvas>
В jqueryFunction() сделайте оператор if else, поэтому, если игра запущена: fire.
иначе если игра не работает: загрузите игру.
Возможно, вам нужно определить игру таким образом:
var game = function(e,...)
$("#start").click(game);
И помните, что первым параметром является объект события, переданный из функции щелчка.
С уважением.