Ограничительный 'div#ast-mobile-header' лучше указывать в привязке обработчиков, а не внутри с проверкой. Внутри обработчика через this можно обратиться к самому элементу, на котором произошло событие, $(this) и далее поиск стилей или классов.
Первый запуск не срабатывает из-за сравнения "display:none" на каком-то из вложенных ul, совсем не обязательно, что на щелкнутом. Обычно сокрытие делают через добавление или удаление какого-то класса, в котором сокрытие описано. Здесь же, вероятно, попытка сравнивать изначально пустой атрибут style. Развернуть условие просто надо, чтобы сравнить на block, или искать соответствующие классы в стилях темы оформления.
return true/false старый метод, можно заменить на jquery-вское preventDefault, хотя, если событие останавливается, уже хорошо. Теперь надо искать уровни вложенности в обработчиках или подобрать селекторы при инициализации так, чтобы сразу учесть вложенность и обойтись без её проверки в обработчике, мой селектор с пробелами вроде должен выбрать все списки.
Чтобы событие щелчка не уходило дальше вглубь. Щелчок по кнопке внутри пункта будет прерываться на обработчике пункта этим возвратом лжи. Чтобы два раза не вызывался обработчик кнопки.
В момент запуска запроса запускаем и секундный таймер с процедурой отображения иконки, а в обработчике ответа на запрос делаем отмену таймера и скрытие иконки.
Антон Воскобоев,
Обучаемые обычно не в состоянии правильно использовать некоторые достоинства предмета. Лучше постигать такое достоинство с некоторой подготовкой, в своё время.
Лучше, чтобы встроенный медиасервер не напрягался от множества посетителей, а ещё авторизация нужна какая-никакая. Для камеры точно ретранслятор понадобится, а регистратор — надо смотреть, что он умеет.