尝试将函数名称作为变量传递,以便在函数等中调用它,但无法弄清楚如何调用它。
欢迎任何帮助!
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!');
}
最好,Dan。
答案 0 :(得分:1)
您应该传递描述函数的标识符,而不是带有名称的字符串。切换这个:
$('#slideShow').makeSlideShow({
callback : 'fullscreenImage'
});
到此:
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
答案 1 :(得分:1)
您正在将字符串文字传递给您的插件。您需要传递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
答案 2 :(得分:0)
如果传递字符串,则需要知道函数所在的范围。
window[ opts.callback ]()
或
window[ opts.callback ].call( this )
这些假设函数是全局的。
最好是要求传递对函数的引用而不是String。
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
function fullscreenImage(){
alert('called!');
}
然后你会这样做:
opts.callback()
或
opts.callback.call( this )
答案 3 :(得分:0)
您可以按如下方式设置'callback'属性:
$('#slideShow').makeSlideShow({
callback : fullscreenImage
});
而且你可以这样称呼它:
...
callback()
...