0

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

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


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

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

在这里摆弄

4

3 回答 3

2

您实际上必须有一个匿名函数来包装您的onComplete()

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

演示在这里

在 jQuery 文档中:

complete
类型:Function()
动画完成后调用的函数。

在不使用包装函数的情况下添加onComplete()该函数时,将立即调用该函数,否则您只需使用 引用它onComplete,但除非您使用传递参数,否则您无法传递您的值.bind()

于 2013-10-06T18:36:07.140 回答
1

您可以使用.bind()

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

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

于 2013-10-06T18:41:53.320 回答
1

使用匿名函数:

$('#btnSubmit').click(function () {
   $('#testDiv').hide('slow', function () { 
      onComplete('test') 
   });
});
于 2013-10-06T18:35:18.310 回答