【问题标题】:How to pass data through a call back function如何通过回调函数传递数据
【发布时间】:2014-04-24 21:33:00
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery plugins jquery-plugins callback


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这比我想象的要简单得多
    猜你喜欢
    • 2017-11-15
    • 2017-06-24
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2021-11-12
    • 2018-04-02
    相关资源
    最近更新 更多