将参数传递给回调JavaScript
我希望在单击事件后启动回调函数。目前我有JavaScript将参数传递给回调JavaScript,javascript,jquery,callback,Javascript,Jquery,Callback,我希望在单击事件后启动回调函数。目前我有JavaScript $('#btnSubmit').click(function () { $('#testDiv').hide('slow', onComplete('test')); }); var onComplete = function (t) { $('#hiddenDiv').
$('#btnSubmit').click(function ()
{
$('#testDiv').hide('slow', onComplete('test'));
});
var onComplete = function (t)
{
$('#hiddenDiv').hide();
alert(t);
}
回调函数应该在隐藏#testDiv
后启动。但是,onComplete函数首先启动。如果我删除onComplete上的参数,只给它一个引用而不调用它,那么函数会在正确的时间启动,但我不能向它传递参数。如何将参数传递给onComplete,而不在div完成隐藏之前触发它
小提琴使用匿名功能:
$('#btnSubmit').click(function () {
$('#testDiv').hide('slow', function () {
onComplete('test')
});
});
使用匿名函数:
$('#btnSubmit').click(function () {
$('#testDiv').hide('slow', function () {
onComplete('test')
});
});
实际上,您必须有一个匿名函数包装您的
onComplete()
:
演示
在jQUery文档中:
完成类型:函数()
动画完成后要调用的函数
如果添加
onComplete()
而不使用包装函数,则会立即调用该函数,否则只需使用onComplete
引用该函数,但除非使用.bind(),否则无法传递值
来传递您的参数。您必须在那里有一个匿名函数来包装您的onComplete()
:
演示
在jQUery文档中:
完成类型:函数()
动画完成后要调用的函数 当添加
onComplete()
而不使用包装函数时,该函数将立即被调用,否则您需要仅使用onComplete
引用它,但是您不能传递值,除非您使用.bind()
来传递参数。您可以使用.bind()
:
第一个参数是此
将在onComplete
函数中具有的值。所有其他参数都是参数列表。您可以使用.bind()
:
第一个参数是
此
将在onComplete
函数中具有的值。所有其他参数都是参数列表。你能解释一下为什么必须使用匿名函数来调用onComplete,而不能直接调用onComplete吗?@wootscootinboogie,因为你不能传递带有附加参数的函数引用。你能解释一下为什么必须使用匿名函数来调用onComplete,然后不能直接调用onComplete吗?@wootscootinboogie,因为您无法传递带有附加参数的函数引用。请尝试$('testDiv')。隐藏('slow',onComplete)
,传递回调函数引用而不是执行它。try$('#testDiv')。hide('slow',onComplete)代码>,,传递回调函数引用而不是执行回调函数引用。为什么bind中的第一个参数为null且未定义?@wootscootinboogie如果在函数onComplete
中不使用this
,则第一个参数是什么并不重要。为什么bind中的第一个参数为null且未定义?@wootscootinboogie无论第一个参数是什么,如果在函数onComplete
中不使用this
。
$('#testDiv').hide('slow', onComplete.bind(null, 'test'));