jQuery не сразу срабатывает изменение свойст css - Форум об интернет-маркетинге
Этот сайт существует на доходы от рекламы.
Пожалуйста, выключите AdBlock.
Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 13.02.2018, 21:02   #1
Аспирант
 
Регистрация: 28.03.2010
Сообщений: 125
Репутация: 16057
Отправить сообщение для spider13 с помощью ICQ Отправить сообщение для spider13 с помощью Skype™
Социальные сети

По умолчанию jQuery не сразу срабатывает изменение свойст css

Код простой

PHP код:
      var ul = $(this).find('ul');
      var 
ulWrap = $(this).find('.catalog_filters_group-wrap');
      $(
this).find('li').eq(9).nextAll('li').addClass('is-hidden');
      
ul.height(ul.height());
      
ulWrap.height(ulWrap.height()); 
Проблема данного когда, что иногда(не всегда) в хроме(на остальных браузерах не пробовал) родительский блок ul отображается в полную высоту(на все 40 элементов, хотя показываются только первые 9, остальный скрыты). Решить проблему вышло так.

PHP код:
      var ul = $(this).find('ul');
      var 
ulWrap = $(this).find('.catalog_filters_group-wrap');
      $(
this).find('li').eq(9).nextAll('li').addClass('is-hidden');
      
setTimeout(function () {
        
ul.height(ul.height());
        
ulWrap.height(ulWrap.height());
      }, 
1); 
Но почему такая проблема? Кто может ответить?
__________________
ICQ: 3533966 | Skype: spider13software | E-Mail: admin@spider13.net | Разработчик Node.js
spider13 вне форума   Ответить с цитированием

Реклама
Старый 13.02.2018, 23:33   #2
Aisamiery
Full stack web developer
 
Аватар для Aisamiery
 
Регистрация: 12.04.2015
Адрес: Санкт-Петербург
Сообщений: 1,068
Репутация: 94893

По умолчанию Re: jQuery не сразу срабатывает изменение свойст css

оберните в $(document).ready(function() {...})
__________________
Разработка проектов на Symfony 3/4, 1C-Bitrix, UMI.CMS
Виртуальные сервера с почасовой оплатой
Aisamiery вне форума   Ответить с цитированием
Старый 16.02.2018, 13:00   #3
spider13
Аспирант
 
Регистрация: 28.03.2010
Сообщений: 125
Репутация: 16057
Отправить сообщение для spider13 с помощью ICQ Отправить сообщение для spider13 с помощью Skype™
Социальные сети

ТопикСтартер Re: jQuery не сразу срабатывает изменение свойст css

Цитата:
Сообщение от Aisamiery Посмотреть сообщение
оберните в $(document).ready(function() {...})
Если все было бы так просто, я бы сюда не писал. Все обернуто.

Проблема в том, что срабатывает через раз.
spider13 вне форума   Ответить с цитированием
Старый 17.02.2018, 01:29   #4
WEMASTER
Бетмен
 
Регистрация: 16.08.2012
Сообщений: 98
Репутация: 15048

По умолчанию Re: jQuery не сразу срабатывает изменение свойст css

Цитата:
Сообщение от spider13 Посмотреть сообщение
Если все было бы так просто, я бы сюда не писал. Все обернуто.

Проблема в том, что срабатывает через раз.
Ну так зачем вы установили задержку в 1 миллисекунду ?
Браузер просто физически не успеет добавить классы к элементам, сделать подсчет высоты с учетом видимости по css и отрисовать результат.

Вот так должно работать (задержка пол секунды).

Код:
var ul = $(this).find('ul'); 
var ulWrap = $(this).find('.catalog_filters_group-wrap'); 
$(this).find('li').eq(9).nextAll('li').addClass('is-hidden'); 
setTimeout(function () {
	ul.height(ul.height()); 
	ulWrap.height(ulWrap.height()); 
}, 500);
WEMASTER вне форума   Ответить с цитированием
Старый 18.02.2018, 15:03   #5
silicoid
Академик
 
Регистрация: 13.10.2014
Сообщений: 1,253
Репутация: 130769

По умолчанию Re: jQuery не сразу срабатывает изменение свойст css

мне вообще не понятна вот эта конструкция
Код:
setTimeout(function () {
	ul.height(ul.height()); 
	ulWrap.height(ulWrap.height()); 
}, 1);
От таких конструкций вообще надо отказываться в пользу
$(window).bind('load',function(){
});

отличие window.load от document.ready состоит в том, что последняя срабатывает после построения дерева, а первая после построения дерева dom и рендера изображений.

Последний раз редактировалось silicoid; 18.02.2018 в 15:27..
silicoid вне форума   Ответить с цитированием
Ответ




Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Текущее время: 21:01. Часовой пояс GMT +3.

Регистрация Справка Календарь Поддержка Все разделы прочитаны