将参数传递给回调JavaScript

时间:2013-10-06 18:33:03

标签: javascript jquery callback

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

 $('#btnSubmit').click(function ()
            {
                $('#testDiv').hide('slow', onComplete('test'));
            });


            var onComplete = function (t)
            {
                $('#hiddenDiv').hide();
                alert(t);
            }

隐藏#testDiv后,应该触发回调函数。但是,onComplete函数首先触发。如果我删除onComplete上的参数并只给它一个引用而不是调用它,那么该函数会在正确的时间触发,但是我无法将参数传递给它。如何在div完成隐藏之前将参数传递给onComplete并且不激活?

小提琴here

3 个答案:

答案 0 :(得分:2)

你必须在那里包含onComplete()

的匿名功能
$('#btnSubmit').click(function () {
    $('#testDiv').hide('slow', function () {
        onComplete('test')
    });
});

演示here

在jQUery文档中:

  

<强>完整
  类型:功能()
  动画完成后调用的函数。

在没有包装功能的情况下添加onComplete()时,系统会立即调用该函数,否则您只需使用onComplete引用该函数,但除非使用.bind(),否则无法传递您的值传递你的参数。

答案 1 :(得分:1)

使用匿名函数:

$('#btnSubmit').click(function () {
   $('#testDiv').hide('slow', function () { 
      onComplete('test') 
   });
});

答案 2 :(得分:1)

您可以使用.bind()

$('#testDiv').hide('slow', onComplete.bind(null, 'test'));

第一个参数是this函数中的值onComplete。所有其他参数都是参数列表。