Изменения, внесенные Jquery в CSS в Laravel/FancyTree, отражаются только в конце функции

#javascript #php #jquery #laravel #fancytree

Вопрос:

В настоящее время у меня есть причудливое дерево, в котором при активации узла он будет проходить через кучу ajax/серверного кода, что отнимает время.

Желаемый результат: При нажатии на узел активный обработчик событий должен перехватывать событие и отображать значок загрузки до тех пор, пока не будет завершен весь следующий код, прежде чем значок загрузки будет удален.Однако изменения CSS, внесенные jquery, не будут выполняться до тех пор, пока функция уже не будет завершена, даже если команда jquery уже была вызвана до дополнительного набора ajax и внутреннего кода. Это приводит к тому, что загрузчик вообще не отражается.

Плохое решение: Установка тайм-аута Windows между переключением видимости загрузчика позволяет фактически отображать загрузчик на экране перед его повторным удалением.

 activate: function(event, d) {
console.log('make loader appear');
 $('#loader').css('display','block')
//bunch of random code here
$('#loader').css('display','none')
}
 

Несмотря на вызов кода jquery до и после внутреннего кода, загрузчик так и не появился

Ответ №1:

Я думаю, что это, вероятно, потому, что после того, как вы покажете индикатор загрузки, вы сразу же его спрячете.

Смотрите свой код в функции активации события :

$('#loader').css('display','block') //bunch of random code here $('#loader').css('display','none')

Комментарии:

1. На самом деле между ними есть куча кода, который включает в себя извлечение данных из базы данных и т. Д. @Dicki Andrea