Проблема в том, что for
цикл является синхронным и блокирует поток пользовательского интерфейса от обновления с добавлением / удалением класса, которое вы сделали.
Решением этого является то, что петля в короткой задержке, например:$("#search").submit(function(e) { e.preventDefault(); var $search = $("#search-button") $search.removeClass("fa-search").addClass("fa-spinner fa-spin") setTimeout(function() { for (var i = 0; i < 50000; i++){ console.log(i) } $search.addClass("fa-search").removeClass("fa-spinner fa-spin") }, 50); })
event
Рабочий пример
Обратите внимание, что вы должны использовать event
параметр, переданный обработчику события, а не глобальный event
объект. Кроме того, логика removeClass()
/ addClass()
была назад после цикла и задала неправильные классы, в которых вы заявляете, что хотите повторно установить fa-search
класс.