0

我正在编写一个小插件,是否可以避免两次编写相同的函数?

if(opts.effect === 'fade'){
                            // fade effect
                            (opts.overlay).children().fadeOut(opts.time_fadeOut).promise().done(function () {
                                overlay_content.fadeIn();
                            });     
                            //don't need to make the overlay fadeIn every time
                            (opts.overlay).fadeIn();
}

else if(opts.effect === 'slide'){
                            // sldie up/down effect
                            (opts.overlay).children().fadeOut(opts.time_fadeOut).promise().done(function () {
                               overlay_content.delay(500).fadeIn();
                            });
                            (opts.overlay).slideDown();
}

有没有更好的使用 if 语句的方法?完整的脚本

4

1 回答 1

1

尝试使用opts.effect并使用它来确定函数(opts.overlay)[effect]();

var effect = (opts.effect === 'fade')?'fadeIn':'slideDown';
var cBfx = (opts.effect === 'fade')?fadeCB:slideCB;

(opts.overlay).children().fadeOut(opts.time_fadeOut).promise().done(cBfx );

(opts.overlay)[effect]();

function slideCB () { overlay_content.delay(500).fadeIn(); }

function fadeCB() {  overlay_content.fadeIn(); }
于 2013-02-15T15:31:34.053 回答