如何通过回调函数传递数据

时间:2014-04-24 21:33:00

标签: javascript jquery plugins jquery-plugins callback

我正在构建我的第一个插件,并且我坚持通过回调函数传回变量。 该插件目前处于早期阶段

$(function(){
    $.fn.test = function(options){
        options = $.extend( $.fn.test.defaults, options );
        // Set up the default options.
        $.fn.test.defaults = {
        colour : 'red'
        };
        //set up functions
        return this.each( function() {
            // Do something for each item.
             $( this ).css('background-color',options.colour);
             $(this).animate({width:'500px'},300,options.complete);
             $(this).animate({width:'200px'},300,options.done);

        });
        $.isFunction( options.setup ) && options.setup.call( this );
    };
}(jQuery));
$(document).ready(function(){
    $('#new_upload').test({
        colour:'blue',
        complete:function(){
            console.log('somehitng');
        },
        done:function(data){
            console.log(data);
        }
    });
});

这是调用回调函数的行:

$(this).animate({width:'200px'},300,options.done);

但是我如何将数据传递给它,以便可以像这样收到

done:function(data){
    console.log(data);
}

1 个答案:

答案 0 :(得分:1)

您可以将回调包装在匿名函数中:

$(this).animate({width:'500px'},300, function(){
    options.complete("something");
});

或者,您可以使用Function.bind使用参数预填充回调:

$(this).animate({width:'500px'},300, options.complete.bind(null, "something")});