单击pageload上的函数触发?

Dam*_*mon 7 javascript jquery javascript-events onload mouseclick-event

试图弄清楚这是怎么可能的......

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

function save(){
    alert('uh');
}
Run Code Online (Sandbox Code Playgroud)

.

<form id="video-details" method="post" action="">
    <input id="saveBtn" class="submit" type="submit" name="submit" value="Submit Video" disabled/>
</form>
Run Code Online (Sandbox Code Playgroud)

我在save()函数上设置了一个断点,它由列出click事件的行上的匿名函数调用.然而,这是直接在加载时发生的,更不用说输入开始不可见和禁用,因此无法单击它.

我将click函数更改为存在且不存在的不同元素,无论我做什么,该函数仍会在页面加载时触发.

不确定在哪里调查其原因,但我认为这不是正常行为

det*_*lor 25

尝试将脚本更改为:

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

function save(){
    alert('uh');
}
Run Code Online (Sandbox Code Playgroud)

通过在click声明中使用括号来调用函数.如果您只使用函数名称,那么您将提供函数的引用而不是调用.

用变量调用

如果使用变量调用函数,则需要使用闭包(假设在声明事件时可以访问变量)

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

function save(message){
  alert(message);
}
Run Code Online (Sandbox Code Playgroud)

有关闭包的更多信息,请查看JavaScript闭包如何工作?.