2010-10-17 7 views
24

Es posible especificar opciones para mostrar y ocultar las opciones de un cuadro de diálogo en jQuery UI.jQuery UI: diálogo mostrar/ocultar efectos con las opciones

Por ejemplo, en lugar de:

$('#dialog').dialog({ 
    show: 'fade' 
}); 

Algo así como:

$('#dialog').dialog({ 
    show: {effect: 'fade', speed: 1000} 
}); 

(. El código anterior no, por supuesto, el trabajo)

lo que realmente estoy tratando para utilizar es el método "completo" dentro del efecto, o una función de devolución de llamada, por lo que puedo seleccionar un texto después de que se realiza el efecto.

Si alguien sabe, gracias.

Respuesta

26

Puede utilizar esta:

$("#dialog").dialog({ 
     autoOpen: false, 
     hide: 'fold', 
     show: 'blind' 
}); 

Y establecer dos efectos diferentes para ocultar y mostrar.

No puede usar el método "completo". Al menos no con la versión real. Esa característica es planned for release 1.9

creo que sirve

+0

En realidad, sí ayuda. Gracias. – eje211

46

No sé cómo especificar todas las opciones, pero se las arregló para especificar la velocidad, que es la opción que tiene en su ejemplo. Lo hice de la siguiente manera:

$('#dialog').dialog({ 
show: {effect: 'fade', duration: 250} 
hide: {effect: 'fade', duration: 5000} 
}); 

duración es la cantidad de milisegundos que durará la animación. Descubrí esto al recorrer el javascript con Firebug.

+3

¡Bonito hallazgo! ¡Te di un voto positivo para visitar jQuery! – BenSwayne

2

Para ver las opciones de cada efecto, puede ir al http://docs.jquery.com/UI/Effects y hacer clic en el efecto que desea ahora con las opciones específicas. Por ejemplo http://docs.jquery.com/UI/Effects/Bounce

Ah, y por cierto, Fade Effect no tiene argumentos específicos. Si se utiliza el efecto de rebote aquí hay un ejemplo de código:

$('#dialog').dialog({ 
show: {effect: 'bounce', duration: 350, /* SPECIF ARGUMENT */ times: 3} 
}); 
-1

Prueba esto:

snippet.dialog({ 
open: function(event, ui) { 
    snippet.hide(); 
    snippet.fadeIn(); 
}}); 
0

me gustaría añadir que se puede especificar la duración global de efectos añadiendo lo siguiente en el documento.

$.fx.speeds._default = duration; 

duración puede ser una opción ('lento', 'rápido', etc.) o un número en milisegundos

+1

Lo pensaría dos veces antes de modificar esta propiedad (interna, tenga en cuenta el subrayado inicial), ya que afectará a todas las secuencias de comandos dependientes de jQuery en la página, no solo la suya. –

+0

Tienes razón, me funciona porque estoy usando muy pocos efectos. Si alguien está usando ui-tabula por ejemplo, la transición sería muy lenta con una duración> 1000ms –

Cuestiones relacionadas