Не работает метод 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, время: 04:40. |