繁体   English   中英

jQuery .click()函数自动调用

[英]jQuery .click() function called automatically

我在使用jQuery的按钮上设置了事件侦听器,由于某种原因,单击侦听器中的函数被调用而没有单击按钮。 我知道通常在侦听器中函数是匿名的,但不能用作匿名函数。 我正在调用的函数还必须接受参数,这就是为什么我认为我不能只调用对该函数的引用。 关于如何解决该问题的任何想法,即使没有注册也无需单击即可调用,并且仍将必要的参数传递给该函数?

$('#keep-both').click(keepBothFiles(file, progress, audioSrc));

调用此功能

function keepBothFiles(file, progress, audioSrc) {
    ...
    ...
}

您未正确引用该函数。 尝试以下方法:

$('#keep-both').click(function(){
  keepBothFiles(file, progress, audioSrc);
});

每当您使用语法funcName()()告诉解释器立即调用该函数。 .click方法要求您向其传递对函数的引用。 函数引用仅按名称传递。 您也可以这样做:

$('#keep-both').click(keepBothFiles);

但是您不能将其他参数传递给它。 默认情况下给它一个事件对象

您必须将函数引用传递给.click()函数,而不是调用函数的结果。 当包括()这样的keepBothFiles(...)在函数名的结尾,你是在告诉现在的JavaScript执行功能。 当您仅使用诸如keepBothFiles之类的函数名称时,您将获得对该函数的引用(以后可以调用)。

您当前正在立即调用函数,然后将该函数的返回值(不是函数引用)传递给.click()函数,因此它无法执行您想要的操作。

单击处理程序回调函数仅在jQuery中传递了一个参数(事件),因此无法像调用它一样直接调用keepBothFiles(file, progress, audioSrc)函数。

相反,可以使用第二个包装器函数来完成此操作:

$('#keep-both').click(function(e) {
    keepBothFiles(file, progress, audioSrc);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM