函数的回调作为变量传递

时间:2010-12-08 14:56:22

标签: jquery function variables callback

尝试将函数名称作为变量传递,以便在函数等中调用它,但无法弄清楚如何调用它。

欢迎任何帮助!

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。

4 个答案:

答案 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()
...