【问题标题】:Function should execute on click, but does automatically at the loading [duplicate]功能应在点击时执行,但在加载时自动执行[重复]
【发布时间】:2020-05-12 13:39:01
【问题描述】:

一个简单的快速问题我根本无法找出答案,尽管我在 stackoverflow 上遇到了很多问题。我是新手,感谢您的耐心等待!

在这里:我有一个函数声明(希望)像这样:

function test(parameter) {
$(parameter).trigger("click");
};

然后我想在点击某些东西时调用这个函数,像这样:

$("#buttonOne").on("click", test("#correctParameter"));

现在,问题是该功能实际上是在页面加载时执行的,然后在单击 #buttonOne 时不起作用。我在 w3school 上读到过

如果表达式后面有 (),函数表达式将自动执行。

事实上,当我没有使用任何参数时,它只在点击时起作用:

function test() {
$("#correctParameter").trigger("click");
};
$("#buttonOne").on("click", test);

但是我必须使用参数选项,所以我可以在其他时间调用这个函数并每次给它不同的参数。你能帮我解决这个问题吗?

【问题讨论】:

  • 这是一个常见问题,它们将是具有更多细节的重复项 - 但本质上,您需要将其包装在 function() {} 中(添加一个内联匿名函数):$("#buttonOne").on("click", function() { test("#correctParameter") });

标签: jquery function self-invoking-function


【解决方案1】:

您应该在function 中调用test,如下所示:

$("#buttonOne").on("click", function(){
     test("#correctParameter")
});

这是一个例子:

function test(parameter) {
     $(parameter).trigger("click");
};
$("#buttonOne").on("click", function(){
     test("#correctParameter")
});
$('#correctParameter').on('click', function(){
     console.log("correctParameter clicked")
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="buttonOne">Click</button>
<button type="button" id="correctParameter">Other</button>

【讨论】:

  • 这太棒了(下面的评论也基本上是一样的)。太感谢了!很抱歉我没有找到重复的,我真的试图通过大量的问题来查看,但不知何故没有找到那个。现在像魅力一样工作:)
  • 不客气!最好在function 中编写代码,而不是像您那样直接在侦听器中调用它,尤其是在传递参数时,否则它将被直接调用。
【解决方案2】:

Javascript 允许您将回调定义为anonymous functions 并在其中触发您的函数调用,如下所示:

function test(parameter) {
  $(parameter).trigger("click");
};

$("#buttonOne").on("click",function() {
  test('"#correctParameter"');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多