2011-10-11 19 views
2

我有一个JavaScript对象像这样的,这是负责管理的消息:如何将DRY应用于此JavaScript对象?

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被调用。已被调用三次this.removeMessages();。三次我用messageContainer.text(text);来显示文字。

注意:messageContainer是一个jQuery对象,我将使用这个对象作为_message.info('some information');

回答

3

可以一次移除多个类与removeClass

.removeClass([className])
classNameOne或多个被从每一个匹配元素的类属性去除空格分隔类。

所以,你可以这样做:

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

您还可以清理其他三个有小帮手:

_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); 
}