Prolific,
у вас на этом элементе уже висит delay(), который и блокирует анимацию. Выходом может быть создание блока-обёртки чтобы вешать slideUp на разные элементы:
var showMessage = (function() {
var i = 0;
var messCount = 0;
var maxMessCount = 3;//Количество возможных отображаемых сообщения одновременно
return function(type, msg, delay) {
if(messCount >= maxMessCount) {
var remElem = $('#wrapper'+(i-maxMessCount));
console.log('messCount >= maxMessCount: ', remElem);
remElem.slideUp(300, function() {
//alert('a');
console.log('End anim, remove: ' + remElem.attr('id'));
remElem.remove();
//messCount = messCount > 0 ? messCount - 1 : 0;
});
//remElem.remove();
messCount = messCount > 0 ? messCount - 1 : 0;
}
$('.messageDiv').append('<div id="wrapper'+i+'"><div class="'+type.match(/\w+$/)+'" id="showMess_'+i+'" style="display: none;">'+msg+'</div></div>');
messCount++;
$('#showMess_'+i).slideDown(300, function(){
$(this).delay(delay).slideUp(300, function(){
if($(this).length) {
$(this).parent().remove();
messCount = messCount > 0 ? messCount - 1 : 0;
}
});
});
i++;
return false;
}
})();