Estoy trabajando con una gran base de código existente con toneladas de código heredado que no puedo cambiar. Mi tarea es actualizar a la versión 1.8 de la biblioteca de UI. Tengo problemas con el posicionamiento de un elemento jquery.ui.dialog().Cómo adjuntar a todos los eventos abiertos de Jquery.UI.dialog para cambiar el tamaño del diálogo dinámicamente en abierto?
Todo el sitio se carga mediante javascript (que supongo que es furor en este momento). Toneladas de HTML se cargan dinámicamente lo que causa problemas de posicionamiento con el cuadro de diálogo. Anteriormente, el sitio utilizaba una posición de CSS personalizada: relativa para asegurarse de que todos los cuadros de diálogo estuvieran en posición correcta.
Los diálogos están configurados como esto:
$('#deletingDialog').dialog({ autoOpen: false, modal: true, position: 'center' });
Con la interfaz de usuario 1.8 se ha producido un cambio en el diálogo de direcciones() obras que rompe este comportamiento: http://jqueryui.com/docs/Upgrade_Guide/1.8.6
no cambian Posición DOM en abierto
Los cuadros de diálogo ya no se mueven en DOM cuando se abren. El único momento en que se mueve el cuadro de diálogo es durante la inicialización cuando se agrega al cuerpo . Esto soluciona una serie de problemas , tales como ser reinicio elementos de formulario, iframes recarga, etc.
Todo el código de configuración de diálogo() está obligado a html elementos muy temprano y se encuentra en varios lugares diferentes. En un mundo perfecto, podría entrar allí y cambiar todas las llamadas de diálogo para que se atrasen y solo configurarlo justo antes de que se abra el diálogo. Esto probablemente arreglaría el problema. Desafortunadamente cambiar todo este código es realmente prohibitivo y desafiante no es una opción.
Lo que estoy pensando es enganchar en el evento abierto de diálogo http://jqueryui.com/demos/dialog/#event-open y restablecer la posición justo antes de que se abra realmente la ventana modal.
Así que o bien puedo encontrar todos los elementos con cuadros de diálogo y luego vincular a través de $(".selector").bind("dialogopen"
etc etc. o enganchar en el evento globalmente (preferido). Ya sea que necesito una manera de decir "dame todos los elementos con un cuadro de diálogo adjunto" o "siempre hacer este código cuando el evento abierto sucede.
¿Alguna idea?
Esto es lo que hice antes de su respuesta. Útil para el siguiente tipo sin embargo. Gracias. – jfar
esto ya no funciona, 2 años después. – Jason
@Jason: Debería funcionar bien: http://jsfiddle.net/Aa5nK/99/. Ese violín usa la última jQueryUI y cierra la posición actual. –