Próbuję użyć jQuery BlockUI Plugin, aby zablokować okno dialogowe jQuery podczas wykonywania algorytmu sortowania. Funkcja sortowania działa w następujący sposób:BlockUI trwa zbyt długo, aby zablokować okno dialogowe jQuery.
doSort : function() {
$("#sort_dlg").block();
// sort... takes a few seconds
$("#sort_dlg").unblock();
}
Działa, rodzaj. Okno dialogowe nie zostanie zablokowane do momentu zakończenia sortowania. (Sortowanie odbywa się lokalnie, nie ma wywołania AJAX ani nic takiego.) Jak mogę je zablokować PRZED sortowaniem?
Próbowałem przeniesienie połączenia block()
na przycisk OK metody w oknie dialogowym:
$(function() {
$("#sort_dlg").dialog({
autoOpen: false,
bgiframe: true,
modal: true,
buttons: {
"Cancel": function() { $(this).dialog("close"); },
"OK": function() {
$("#sort_dlg").block();
doSort();
}
}
});
});
Ale to nie pomogło. (Jestem otwarty na sugestie dotyczące blokowania interfejsu użytkownika przy użyciu innej techniki.)
Jest tak prawdopodobnie dlatego, że blockUI używa animacji do pojawiania się w wyskakującym okienku modalnym, a podczas gdy te animacje działają asynchronicznie, kod sortowania zaczyna działać. Ponieważ Twój kod sortowania działa synchronicznie na Twojej stronie, przeglądarka jest blokowana do czasu zakończenia kodu sortowania. Twoja odpowiedź brzmi: użyj funkcji zwrotnej, na którą teraz patrzę ... – Pandincus