Я пытаюсь использовать jQuery BlockUI Plugin, чтобы заблокировать диалог jQuery, когда он выполняет алгоритм сортировки. Функция, которая сортируется, работает следующим образом:BlockUI занимает слишком много времени, чтобы заблокировать диалог jQuery
doSort : function() {
$("#sort_dlg").block();
// sort... takes a few seconds
$("#sort_dlg").unblock();
}
Это работает, вроде. Диалог не блокируется до тех пор, пока ПОСЛЕ сортировки не закончится. (Сортировка выполняется локально, нет вызова AJAX или чего-то еще.) Как мне его блокировать до сортировки?
Я попытался переместить block()
вызов ОК метода кнопки диалога:
$(function() {
$("#sort_dlg").dialog({
autoOpen: false,
bgiframe: true,
modal: true,
buttons: {
"Cancel": function() { $(this).dialog("close"); },
"OK": function() {
$("#sort_dlg").block();
doSort();
}
}
});
});
Но это не помогло. (Я открыт для предложений по блокировке пользовательского интерфейса с использованием какой-либо другой техники.)
Возможно, это связано с тем, что blockUI использует анимации для постепенного изменения модального всплывающего окна, и пока эти анимации работают асинхронно, ваш код сортировки начинает работать. Поскольку ваш код сортировки выполняется синхронно на вашей странице, браузер блокируется до завершения кода сортировки. Ваш ответ заключается в использовании функции обратного вызова, которую я просматриваю прямо сейчас ... – Pandincus