点击函数在页面加载时触发?

发布于 2024-12-03 13:46:11 字数 564 浏览 0 评论 0原文

试图弄清楚这怎么可能

$(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 上触发。

不知道还能在哪里调查造成这种情况的原因,但我假设这不是正常行为

Trying to figure out how this is possible...

$(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>

I set a breakpoint on the save() function and it is being called by an anonymous function on the line with the click event listed. However this is happening directly on load, not to mention that the input starts off invisible and disabled so there is no way to click it.

I changed the click function to different elements that both exist and don't exist and whatever I make it the function still fires on pageload.

Not sure where else to investigate the cause of this, but I'm assuming it's not normal behaviour

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半透明的墙 2024-12-10 13:46:11

尝试将脚本更改为:

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

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

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

使用变量调用

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

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

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

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

Try changing your script to:

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

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

By having brackets in the click declaration you are calling the function. If you just use the function name then you are providing a reference to the function instead of a call.

Calling with variable

If you are calling the function with a variable you would need to make use of a closure (assuming that you have access to the variable when declaring the event

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

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

For more information on closures check out How do JavaScript closures work?.

灯角 2024-12-10 13:46:11

尝试更改为这个。您意外调用了 click

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

try changing to this. You are invoking click accidentally

$(function() {
   $('#saveBtn').click(function (){
     save()});
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文