Estoy intentando usar el jQuery BlockUI Plugin para bloquear un cuadro de diálogo jQuery mientras realiza un algoritmo de clasificación. La función que ordena funciona así:BlockUI tarda demasiado en bloquear el cuadro de diálogo jQuery
doSort : function() {
$("#sort_dlg").block();
// sort... takes a few seconds
$("#sort_dlg").unblock();
}
Funciona, tipo de. El cuadro de diálogo no se bloquea hasta DESPUÉS de que termine la clasificación. (Todo se hace localmente, no hay llamadas AJAX ni nada). ¿Cómo hago para bloquear ANTES de la ordenación?
he intentado mover la llamada al método block()
botón Aceptar del cuadro de diálogo:
$(function() {
$("#sort_dlg").dialog({
autoOpen: false,
bgiframe: true,
modal: true,
buttons: {
"Cancel": function() { $(this).dialog("close"); },
"OK": function() {
$("#sort_dlg").block();
doSort();
}
}
});
});
Pero eso no ayudó. (Estoy abierto a sugerencias para bloquear la UI usando alguna otra técnica.)
Esto es probablemente porque blockUI usa animaciones para fundirse en el menú emergente modal, y mientras estas animaciones se ejecutan de forma asíncrona, el código de ordenación comienza a ejecutarse. Como su código de clasificación se ejecuta de forma síncrona en su página, el navegador queda bloqueado hasta que finalice el código de clasificación. Tu respuesta es usar una función de devolución de llamada, que estoy investigando en este momento ... – Pandincus