В обработчике клика сначала всем удаляется класс active
,
а только затем проверяется, по кому кликнули, и если убранного класса нет – он добавляется.
Так при клике мгновенно удаляется-добавляется назад этот класс.
Можно было бы удалять в начале не всем подряд, а всем, кроме себя.
А для самого блока добавить вариант, что класс уже есть – тогда его убрать.
Но вообще это некруто – полагаться на наличие/отсутствие классов. Лучше держать где-то данные — какой именно блок открыт. И в зависимости от этого отрисовывать интерфейс.