我正在写一个小插件,是否可以避免两次写相同的功能?
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
答案 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(); }