2011-10-11 5 views
2

私はメッセージを管理する責任がある。このようなJavaScriptオブジェクトを、持っている:このJavaScriptオブジェクトにDRYを適用するにはどうすればよいですか?

var _message = { 
      removeMessages: function() { 
       messageContainer.removeClass(errorClass) 
       .removeClass(infoClass) 
       .removeClass(successClass) 
       .text(''); 
      }, 
      info: function (text) { 
       this.removeMessages(); 
       messageContainer.addClass(infoClass).text(text); 
      }, 
      error: function (text) { 
       this.removeMessages(); 
       messageContainer.addClass(errorClass).text(text); 
      }, 
      success: function (text) { 
       this.removeMessages(); 
       messageContainer.addClass(successClass).text(text); 
      } 
     }; 

三回jQueryのremoveClassは呼ばれています。 3回this.removeMessages();が呼び出されました。 3回私はmessageContainer.text(text);を使ってテキストを表示しています。

注:messageContainerはjQueryオブジェクトです。このオブジェクトは_message.info('some information');として使用します。

答えて

3

あなたはremoveClassで一度に複数のクラスを削除することができます一致した各要素のクラス属性から削除する

.removeClass([className])
classNameOne以上のスペースで区切られたクラスを。

だから、これを行うことができます:

_helper: function(text, cls) { 
    this.removeMessages(); 
    messageContainer.addClass(cls).text(text); 
}, 
info: function (text) { 
    this._helper(text, infoClass); 
}, 
error: function (text) { 
    this._helper(text, errorClass); 
}, 
success: function (text) { 
    this._helper(text, successClass); 
} 
:少しヘルパーと

removeMessages: function() { 
    messageContainer 
     .removeClass(errorClass + ' ' + infoClass + ' ' + successClass) 
     .text(''); 
} 

あなたはまた、クリーンアップすることができ、他の3を

関連する問題