Лучший способ сделать так, чтобы анимация «занятого ожидания» была «настраиваемой позицией» в jquery? (т.е. покажите, где находится действие) - PullRequest
0 голосов
/ 07 августа 2011

Я намереваюсь иметь занятого счетчика ожидания, как показано в этом сообщении: Как показать загрузочный счетчик в jQuery? - так как это самый чистый и простой в реализации:

 $('#loadingDiv')
        .hide()  // hide it initially
        .ajaxStart(function() {
            $(this).show();
        })
        .ajaxStop(function() {
            $(this).hide();
        })
    ;

и сопряжение с анимацией из http://www.ajaxload.info/

У меня есть несколько «просмотров» на моей странице, т.е. различные части моей страницы могут быть обновлены / изменены с помощью соответствующих вызовов ajax.

Я бы хотел "расположить" это #loadingDiv близко к тому, где, так сказать, "действие". Как мне это сделать?

Мало что приходит на ум:

  1. Наличие нескольких элементов div повсеместно, скрытие их и отображение их для каждого элемента согласно соответствующему действию - кажется наивным и расточительным
  2. Имейте пустое <span></span>, чтобы «удерживать» #loadingDiv - покажите, когда что-то происходит в этом промежутке. Хотя я не знаю, как это сделать ...
  3. Что-то еще ??

В основном, как лучше подходить к позиционному занятому ожиданию / сигнализации, чем к единому глобальному? Или предпочтительнее использовать вариант с одним глобальным значением, т. Е. Иметь «фиксированный» div, скрытый в верхней / центральной части страницы для каждого действия?

Просто хочу узнать, какой вариант большинство из вас использовали / предпочли для решения чего-то подобного, и как вы предлагаете мне это сделать ...

1 Ответ

1 голос
/ 07 августа 2011

Есть несколько моментов, на которые следует обратить внимание:

Может ли пользователь вызывать проблемы, если он взаимодействует с другими частями страницы во время загрузки запроса?

В этом случае блокируйте весь пользовательский интерфейс с помощью лайтбокса, как прозрачное наложение.

Являются ли действия маленькими и маленькими, не относящимися к остальной части приложения?

Использовать локальный позиционирующий счетчик.Если это кнопка, измените содержимое кнопки, например, с.«Сохранить строку» в «Сохранение ...» с помощью счетчика.

Если запрос является значительным, но вы хотите, чтобы пользователь мог возиться, а графический интерфейс сложен

Вы можете наложить только части экрана.http://sfiddle.net/Lv9y5/39/

Локальные обновления, неблокирующий способ

Используйте jQuery.position для создания объекта Spinner изцарапина.Он должен иметь методы .show (node) и .hide () и, возможно, .setMessage (txt);Ссылка DOM, передаваемая методу show, является элементом, по которому щелкнул пользователь.С помощью ссылки вы можете использовать jQuery .position (), чтобы определить, где находится абсолютное положение загрузочного div.Раздел загрузки должен быть расположен после элемента BODY.

...