Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2017, 12:57
Аватар для Prolific
Интересующийся
Отправить личное сообщение для Prolific Посмотреть профиль Найти все сообщения от Prolific
 
Регистрация: 01.07.2017
Сообщений: 19

Не работает метод 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?
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2017, 16:04
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

крайне желателен макет или минимально необходимый код для понимания, того что не так.
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2017, 19:14
Аватар для Prolific
Интересующийся
Отправить личное сообщение для Prolific Посмотреть профиль Найти все сообщения от Prolific
 
Регистрация: 01.07.2017
Сообщений: 19

Вот моя функция:
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;
	}
})();
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2017, 23:11
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

а html где?
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2017, 05:51
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

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;
    }
})();
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2017, 13:56
Аватар для Prolific
Интересующийся
Отправить личное сообщение для Prolific Посмотреть профиль Найти все сообщения от Prolific
 
Регистрация: 01.07.2017
Сообщений: 19

Спасибо огромное. Заработало. Не знал, что delay блокирует анимацию
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает всплывающая форма на второстепенных страницах denjer Javascript под браузер 0 22.04.2016 21:30
Метод Ext.app.Application#onAppUpdate работает? khusamov ExtJS 1 17.12.2015 21:26
Не работает ajax при OnClick по ссылке firefox govorusha AJAX и COMET 8 06.06.2015 14:34
Не работает console.log.apply(this,arguments) - Почему? Почемучкин Javascript под браузер 9 31.10.2014 17:17
не работает метод kent666 Events/DOM/Window 6 04.10.2011 18:32