函数回调函数作为变量
问题描述:
尝试传递函数名称作为变量,以便在函数中调用它,但无法弄清楚如何调用它。函数回调函数作为变量
任何帮助欢迎!
jQuery.fn.makeSlideShow = function(opts) {
opts = jQuery.extend({
speed :400,
delay :0,
slideCLass :'.slide',
pager :'#pager',
next :'.nextSlide',
previous :'.previousSlide',
startSlide :0,
screenClick :false,
callback:function(){return false;}
},opts||{});
// callback the fullscreenImage function here?
};
$('#slideShow').makeSlideShow({
callback : 'fullscreenImage'
});
function fullscreenImage(){
alert('called!');
}
最好,丹。
答
你传递一个字符串到您的插件。你需要通过function reference
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
在你的插件代码,你需要调用该函数。这可以通过几种方式来完成:
opts.callback(); // default call
opts.callback.call(scope, param1, param2, ...); // invoke makeSlideShow with a specific context and arguments
opts.callback.apply(scope, [param1, param2, ...]); // invoke makeSlideShow with a specific context and arguments as array
答
如果传递一个字符串,您需要知道函数所在的作用域。
window[ opts.callback ]()
或
window[ opts.callback ].call(this)
这些假设的功能是全球性的。
要求传递函数的引用而不是字符串会更好。
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
function fullscreenImage(){
alert('called!');
}
然后,你会怎么做:
opts.callback()
或
opts.callback.call(this)
答
你或许应该通过描述的功能标识,而不是它的名称的字符串。于是关掉这个:
$('#slideShow').makeSlideShow({
callback : 'fullscreenImage'
});
这样:
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
+1
请评论downvotes所以错误或遗漏的细节可以纠正。 Downvotes没有明显的原因是愚蠢的。 – Jakob 2010-12-08 15:06:44
答
您可以进行如下设置 'callbeck' 欢迎使用属性:
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
比你可以这样调用:
...
callback()
...
王牌 - 干杯!只是为了将来的ref如何将params通过makeSlideShow()传递给回调函数? – v3nt 2010-12-08 15:43:18