Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Блокировка событий всех дочерних элементов (https://javascript.ru/forum/dom-window/28605-blokirovka-sobytijj-vsekh-dochernikh-ehlementov.html)

moreo 26.05.2012 17:44

Блокировка событий всех дочерних элементов
 
Здравствуйте!
Задача следующая:
Во время выполнения ajax-запроса необходимо блокировать
элемент dom, включая все его дочерние элементы (все события
onclick, omnouseover и т.д. всех дочерних элементов, input-ы и т.д.).
Проблем с inputam-и не возникло. Как блокировать на время
события всех дочерних элементов?
Прошу не предлагать сторонние библиотеки, а только средствами javascript или jquery.
Благодарю за внимание.

Gvozd 26.05.2012 17:53

что значит блокировать?
Опишите подробней чего вы хотите добиться.

И несколько ответов наугад:
1) синхронный AJAX
при этом окно браузера вообще не будет реагировать на события, пока не будет совершена загрузка
2) снять все обработчики события, которые не должны быть обработаны, и повесить их обратно, после того как запрос будет выполнен.
3) прозрачный DIV поверх "заблокированного" exfcnrf

moreo 26.05.2012 18:21

Gvozd, блокировать ,имею ввиду отключить во время выполнения ajax запроса возможность вызова событий дочерних элементов какогто допустим div-а.

1) синхронный не подходит, не хочу блокировать браузер целиком

2)Этот тоже думал. Но, допустим есть родительский элемент div,
у него есть множество дочерних элементов со своими событиями, которые могут определяться динамически из js. Да, можно убрать все события с unbind, но как их привязать обратно? т.е. как узнать какое событие привязать к какому-то элементу, если элементы могут быть без id и события могут быть не ввиде отдельной функции, а описаны в безымянной функции для данного элемента? Поняли мой вопрос? :)

3) Прозрачный div пробовал, только там возникла небольшая
проблемка. А именно: внутри div-а, который необходимо заблокировать, создаю прозрачный div с z-index-ом больше чем исходный. с помощью jquery ему задаю размеры исходного diva, но проблема в том, что непонятно работает функйия jquery. height() и windth(), т.е. размер прозрачного div то меньше, то больше исходного diva.

Расскажите более подробно про второй или третий вариант, как их правильно реализовать?

Deff 26.05.2012 20:19

Цитата:

Сообщение от moreo
3) Прозрачный div пробовал, только там возникла небольшая
проблемка. А именно: внутри div-а, который необходимо заблокировать, создаю прозрачный div с z-index-ом больше чем исходный. с помощью jquery ему задаю размеры исходного diva, но проблема в том, что непонятно работает функйия jquery. height() и windth(), т.е. размер прозрачного div то меньше, то больше исходного diva.

<div style="position:relative;width:100px;height:32px;padding:0;margin:0;">

  <div id=divA style="position:absolute;z-index:0;width:100%;height:100%padding:0;margin:0;"></div>

  <div  id=divB  style="width:100%;height:100%padding:0;margin:0;"></div>

</div>


Образчик - размеры задаются внешним div(ом) - divA и divB - равны между собой

Поднимать нужно divA

moreo 26.05.2012 23:58

Deff, спасибо, взял за основу твою схему, помогло )


Часовой пояс GMT +3, время: 11:36.