jQuery避免代码重复

时间:2013-02-15 15:29:24

标签: jquery jquery-plugins

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

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 stament有更好的方法吗? full-script

1 个答案:

答案 0 :(得分: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(); }