Нажмите функцию стрельбы при загрузке страницы? - PullRequest
7 голосов
/ 06 сентября 2011

Пытаясь выяснить, как это возможно ...

$(function() {
   $('#saveBtn').click(save());
});

function save(){
    alert('uh');
}

.

<form id="video-details" method="post" action="">
    <input id="saveBtn" class="submit" type="submit" name="submit" value="Submit Video" disabled/>
</form>

Я установил точку останова для функции save (), и она вызывается анонимной функцией в строке с перечисленным событием click. Однако это происходит непосредственно под нагрузкой, не говоря уже о том, что ввод начинается невидимым и отключается, поэтому нет возможности щелкнуть по нему.

Я изменил функцию щелчка на разные элементы, которые существуют и не существуют, и что бы я ни сделал, функция все равно срабатывает при загрузке страницы.

Не уверен, где еще расследовать причину этого, но я предполагаю, что это ненормальное поведение

Ответы [ 2 ]

24 голосов
/ 06 сентября 2011

Попробуйте изменить свой скрипт на:

$(function() {
   $('#saveBtn').click(save);
});

function save(){
    alert('uh');
}

Имея скобки в объявлении click, вы вызываете функцию.Если вы просто используете имя функции, то вместо вызова вы предоставляете ссылку на функцию.

Вызов с переменной

Если вы вызываете функцию с переменной, вам нужно сделатьиспользование замыкания (при условии, что у вас есть доступ к переменной при объявлении события

$(function(){
  var foo = 'bar';
  $('#saveBtn').click(
    function(){
      save(foo);
    });

function save(message){
  alert(message);
}

Для получения дополнительной информации о замыканиях посмотрите Как работают замыкания JavaScript? .

1 голос
/ 06 сентября 2011

попробуйте перейти на это. Вы вызываете клик случайно

$(function() {
   $('#saveBtn').click(function (){
     save()});
});
...