单击页面加载时的功能触发?

时间:2011-09-05 20:42:51

标签: javascript jquery javascript-events onload mouseclick-event

试图找出这是可能的......

$(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 个答案:

答案 0 :(得分:24)

尝试将脚本更改为:

$(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 :(得分:1)

尝试改变这一点。你不小心调用了点击

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