9

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

$(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(),它被一个匿名函数调用,该函数位于列出了单击事件的行上。但是,这直接在加载时发生,更不用说输入从不可见和禁用状态开始,因此无法单击它。

我将点击功能更改为存在和不存在的不同元素,无论我做什么,该功能仍然会触发pageload

不知道还有什么地方可以调查造成这种情况的原因,但我认为这不是正常行为

4

2 回答 2

29

尝试将脚本更改为:

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

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

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

用变量调用

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

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

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

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

于 2011-09-05T20:44:56.430 回答
1

尝试改变这个。您正在调用 click 意外

$(function() {
   $('#saveBtn').click(function (){
     save()});
});
于 2011-09-05T20:47:52.870 回答