2013-02-15 234 views
0

我正在寫一個小插件,並有可能避免兩次寫入相同的功能?jQuery避免代碼重複

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 sta stament? full-script

回答

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(); } 
+0

回調是每個情況下,也 – Archer 2013-02-15 15:32:43

+1

@Archer良好的漁獲不同。查看更新的答案。 – 2013-02-15 15:38:16

+0

謝謝你們,這有助於:) – Alex 2013-02-15 16:14:41