点击功能是否在页面加载时触发?

问题描述 投票:7回答:2

试图弄清楚这是怎么回事...

$(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事件的行上调用了该断点。但是,这是直接在加载时发生的,更不用说输入从不可见和禁用开始,因此无法单击它。

我将click函数更改为既存在又不存在的不同元素,无论我使它如何,该函数仍会在pageload上触发。

不知道还有什么其他原因可以调查,但我认为这不是正常行为

javascript jquery onload jquery-events mouseclick-event
2个回答
26
投票

尝试将脚本更改为:

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

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

通过在click声明中使用方括号,您正在调用该函数。如果仅使用函数名称,那么您将提供对该函数的引用而不是调用。

使用变量调用

如果使用变量来调用函数,则需要使用闭包(假设声明事件时您有权访问该变量

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

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

有关闭包的更多信息,请查看How do JavaScript closures work?。>>


1
投票

尝试更改为此。您不小心点击了[]

$(function() {
   $('#saveBtn').click(function (){
     save()});
});
© www.soinside.com 2019 - 2024. All rights reserved.