Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2025, 22:37
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 785

Действие после события
Привет. Клик по блоку закрывает его и при условии, что он находится сверху другого блока, меняется цвет.
var bodyChat = document.querySelector('.form-body');
        $('.float-chat').on('click', function (e) {
            bodyChat.classList.toggle('show');
            if (icms.chat.elementIsVis('.icms-footer__middle')) {
                if (float_chat.style.color != "") {
                    float_chat.style = ""
                } else {
                    float_chat.style.backgroundColor = '#ecccbd';
                    float_chat.style.color = '#1c223e';
                }
            }
});


Код:
<style>
.form-body {
    position: relative;
    width:100%;
    height:100%;
    margin-bottom:-300px;
    transition: margin 0.5s linear;
}
</style>
Как сделать, что бы цвет менялся после завершения toggle()? То есть, после того, как блок закроется, а не во время клика.
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2025, 22:58
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,765

Через timeout можно
var bodyChat = document.querySelector('.form-body');
$('.float-chat').on('click', function (e) {
	bodyChat.classList.toggle('show');
	if (icms.chat.elementIsVis('.icms-footer__middle')) {
		setTimeout (() => {
			if (float_chat.style.color != "") {
				float_chat.style = ""
			} else {
				float_chat.style.backgroundColor = '#ecccbd';
				float_chat.style.color = '#1c223e';
			}
		}, 0);
	}
});
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2025, 00:13
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,595

Таймаут это кривой костыль, есть событие transitionend. T.e. что-то типа:
var bodyChat = document.querySelector('.form-body');
$('.float-chat').on('click', function (e) {
  bodyChat.classList.toggle('show');
  $(bodyChat).one('transitionend', function() {
    if (icms.chat.elementIsVis('.icms-footer__middle')) {
      if (float_chat.style.color != "") {
        float_chat.style = ""
      } else {
        float_chat.style.backgroundColor = '#ecccbd';
        float_chat.style.color = '#1c223e';
      }
    }
  })
});

Только не надо мешать ванилу с jquery, пишите в одном стиле, в вание:
const bodyChat = document.querySelector('.form-body');
const floatChat = document.querySelector('.float-chat');

floatChat.addEventListener('click', () => {
  bodyChat.classList.toggle('show');
  bodyChat.addEventListener('transitionend', () => {
    if (icms.chat.elementIsVis('.icms-footer__middle')) {
      if (floatChat.style.color !== "") {
        floatChat.removeAttribute('style');
      } else {
        floatChat.style.backgroundColor = '#ecccbd';
        floatChat.style.color = '#1c223e';
      }
    }
  }, { once: true });
});
или в jquery
var $bodyChat = $('.form-body');
var $floatChat = $('.float-chat');

$floatChat.on('click', function () {
  $bodyChat.toggleClass('show');
  $bodyChat.one('transitionend', function () {
    if (icms.chat.elementIsVis('.icms-footer__middle')) {
      if ($floatChat.css('color') !== '') {
        $floatChat.removeAttr('style');
      } else {
        $floatChat.css({
          backgroundColor: '#ecccbd',
          color: '#1c223e'
        });
      }
    }
  });
});
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2025, 08:42
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,765

floatChat.removeAttribute('style');

А что, точно известно, что через style не задано никаких других свойств?
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2025, 09:40
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 785

Всё понятно, большое всем спасибо.
Сообщение от voraa
А что, точно известно, что через style не задано никаких других свойств?
Да.
Сообщение от Aetae
Только не надо мешать ванилу с jquery
Есть такой грешок)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выполнить действие, после загрузки элемента? snovapavel jQuery 3 28.11.2016 17:03
Выполнение события после перехода по ссылке cuoresanguinato Events/DOM/Window 2 10.08.2016 21:03
как обратно включить действие по умолчанию, после e.preventDefault? Кирюха =) Events/DOM/Window 4 04.06.2015 15:32
Функция назначенная обработчику события срабатывает сразу Velidan Общие вопросы Javascript 9 18.02.2015 17:02
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51