[英]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.