试图找出这是可能的......
$(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事件的行上的匿名函数调用。然而,这是直接在加载时发生的,更不用说输入开始不可见和禁用,因此无法单击它。
我将点击功能更改为存在且不存在的不同元素,无论我做什么,该功能仍会在页面加载时触发。
不确定在哪里调查其原因,但我认为这不是正常行为
答案 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()});
});