我正在构建我的第一个插件,并且我坚持通过回调函数传回变量。 该插件目前处于早期阶段
$(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);
}
答案 0 :(得分:1)
您可以将回调包装在匿名函数中:
$(this).animate({width:'500px'},300, function(){
options.complete("something");
});
或者,您可以使用Function.bind
使用参数预填充回调:
$(this).animate({width:'500px'},300, options.complete.bind(null, "something")});