jQuery .click()函数自动调用
我使用jQuery在按钮上设置了一个事件监听器,由于某种原因,在没有单击按钮的情况下调用click监听器中的函数。 我知道通常函数在侦听器中是匿名的,但它不能用作匿名函数。 我调用的函数也必须接受参数,这就是为什么我认为我不能只调用函数的引用。 有关如何解决函数调用问题的任何想法,如果没有点击甚至注册,仍然将必要的参数传递给函数?
$('#keep-both').click(keepBothFiles(file, progress, audioSrc));
调用此函数
function keepBothFiles(file, progress, audioSrc) { ... ... }
您错误地引用了该function。 试试这个:
$('#keep-both').click(function(){ keepBothFiles(file, progress, audioSrc)); });
每当使用语法funcName()
, ()
告诉解释器立即调用该函数。 .click
方法要求您传递对函数的引用。 函数引用仅按名称传递。 你也可以这样做:
$('#keep-both').click(keepBothFiles);
但你无法将其他论点传递给它。 它默认给出一个事件对象
您必须将函数引用传递给.click()函数,而不是调用函数的结果。 当您在函数名的末尾包含像此keepBothFiles(...)
这样的keepBothFiles(...)
时,您正在告诉javascript现在执行该函数。 当您只使用函数名称(如keepBothFiles
,您将获得对该函数的引用(稍后可以调用)。
您当前正在立即调用函数,然后将该函数的返回值(不是函数引用)传递给.click()
函数,因此它不会执行您想要的操作。
点击处理程序回调函数在jQuery中只传递一个参数(事件),所以你不能直接调用你的keepBothFiles(file, progress, audioSrc)
函数。
相反,它可以像这样使用第二个包装函数:
$('#keep-both').click(function(e) { keepBothFiles(file, progress, audioSrc); });