Подтвердить что ты не робот

Отключить все элементы страницы с помощью модальной функции с помощью jquery

Я хочу отключить все элементы страницы при действии. Как функция модальная, которая находится в пользовательском интерфейсе JQuery.

Как и при действии ajax. Я хочу показать уведомление и в то же время включить функцию модальности. А после запроса нужно снова включить элементы страницы.

Есть ли какая-либо опция в ядре jquery для этого или любых плагинов?

4b9b3361

Ответ 1

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

// Declare this variable in the same scope as the ajax complete function
overlay = $('<div></div>').prependTo('body').attr('id', 'overlay');

И CSS:

#overlay {
  position: fixed;
  height: 100%;
  width: 100%;
  z-index: 1000000;
  background: url('link/to/semitransparent.png');
}

Затем, как только действие будет завершено, вы просто удалите его следующим образом:

overlay.remove();

Не нужно включать jQuery UI, если это единственное, что вам нужно.

Ответ 2

Один простой способ достичь этого - определить класс css следующим образом:

.dark-class
{
   background-color: #F0F0F0;
   filter:alpha(opacity=50); /* IE */
   opacity: 0.5; /* Safari, Opera */
   -moz-opacity:0.50; /* FireFox */
   z-index: 20;
   background-repeat:no-repeat;
   background-position:center;
   width: 100%;
   height: 100%;
   position:absolute;
   top: 0px;
   left: 0px;
}

Используйте jQuery для добавления этого класса в пустой div, который является первым потомком элемента body. Удалите класс для отключения модального режима.

Ваше уведомление должно иметь индекс z, превышающий z-индекс темного класса. Все элементы, которые необходимо отключить, должны иметь более низкий индекс z.

Ответ 3

Мне нравится идея Цзяна, но вам не нужен образ со следующей таблицей стилей наложения.

#overlay {
    position: fixed; 
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #000;
    opacity: 0.8;
    filter: alpha(opacity=80);
    z-index:50;
}

Ответ 4

Попробуйте добавить стиль "pointer-events: none"; к телу. Чтобы удалить его, используйте указатель-события: auto;

Подробнее здесь https://css-tricks.com/almanac/properties/p/pointer-events/ Хотя могут быть проблемы с более ранними браузерами, не поддерживающими его