Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给回调JavaScript_Javascript_Jquery_Callback - Fatal编程技术网

将参数传递给回调JavaScript

将参数传递给回调JavaScript,javascript,jquery,callback,Javascript,Jquery,Callback,我希望在单击事件后启动回调函数。目前我有JavaScript $('#btnSubmit').click(function () { $('#testDiv').hide('slow', onComplete('test')); }); var onComplete = function (t) { $('#hiddenDiv').

我希望在单击事件后启动回调函数。目前我有JavaScript

 $('#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'));