jquery ui dialog - example - Diálogo jQuery UI: compruebe si existe el método de instancia
jquery modal show (7)
Me gustaría usar el método de instance
para probar si el widget de diálogo de la interfaz de usuario de jQuery se ha inicializado o no. En cuanto a API , esto es posible, pero no funciona para mí:
Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method ''instance''
demo: http://jsfiddle.net/mDbV7/
ACTUALIZAR:
Esto fue un error en la documentación, el método de la instance
estará disponible desde la versión 1.11.0, consulte este tema .
La última versión de jQuery UI ya no le permite llamar a los métodos de IU en los elementos que aún no se han inicializado. Acabo de envolverlos en una declaración if, como:
if ($("#divToBeDialoged").hasClass(''ui-dialog-content'')) {
// do whatever
} else {
// it is not initialized yet
}
Editar: nombre de clase cambiado, gracias @dmnc
Otra forma es
$(''.element'').is('':data(dialog)'');
Para jQuery UI - v1.10.3
if($( "#myDialog" ).is('':data(uiDialog)'')){//is('':data(dialog)'') does not work
//Dialog exist
}
Puedes usar:
if($(''#id'').is('':ui-dialog'')) {
}
o
var obj = $(''<div>test</div>'').dialog();
if (obj.is('':ui-dialog'')) {
alert(''I/'m a dialog'')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
Si está haciendo ese diálogo desde una identificación existente en su código html, como en este ejemplo:
$(''#main'').dialog({});
Observe que dialog()
agrega la clase ui-dialog
en un elemento primario <div>
generado para que funcione. En el elemento #main
, las clases agregadas por dialog()
son: ui-dialog-content
y ui-widget-content
(en jquery-ui-1.9.2). Entonces, en este caso, siguiendo el ejemplo de @jbabey, puede verificar el diálogo existente haciendo:
if ($(''#main'').hasClass(''ui-dialog-content'')) {
// do whatever
}
También es un buen hábito para vaciar y destruir diálogos una vez que haya terminado de usarlos. Usualmente uso este código en el evento cercano de cada diálogo
$("#myDialog").dialog({
// other options
close: function(event, ui) {
$(this).empty().dialog(''destroy'');
}
}
Ese sería mi consejo, en lugar de preguntar siempre si existe un diálogo en una instancia, asegúrese de que cada cuadro de diálogo se limpie después de sí mismo.
if ($(''#update'').is('':data(dialog)''))
{
//#update has dialog
}
else
{
//#update does''t have dialog
}