Не работает метод slideDown
Yo! В чем может быть причина? код:
var remElem = $('#showMess_'+(i-maxMessCount));
console.log('messCount >= maxMessCount: ' + remElem.attr('id'));
remElem.slideUp(300, function() {
alert('a');
});
alert('b');
В console.log выводит верный ид remElem, но метод slideUp не работает. Так же вызывается alert('b'); Почему не работает slideDown? |
крайне желателен макет или минимально необходимый код для понимания, того что не так.
|
Вот моя функция:
var showMessage = (function() {
var i = 0;
var messCount = 0;
var maxMessCount = 3;//Количество возможных отображаемых сообщения одновременно
return function(type, msg, delay) {
if(messCount >= maxMessCount) {
var remElem = $('#showMess_'+(i-maxMessCount));
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 class="'+type.match(/\w+$/)+'" id="showMess_'+i+'" style="display: none;">'+msg+'</div>');
messCount++;
$('#showMess_'+i).slideDown(300, function(){
$(this).delay(delay).slideUp(300, function(){
if($(this).length) {
$(this).remove();
messCount = messCount > 0 ? messCount - 1 : 0;
}
});
});
i++;
return false;
}
})();
|
а html где?
|
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;
}
})();
|
Спасибо огромное. Заработало. Не знал, что delay блокирует анимацию
|
| Часовой пояс GMT +3, время: 03:52. |