2011-03-12 12 views
6

Estoy tratando de vincular un evento a todos los cuadros de diálogo que se han creado en una página usando la función de diálogo JQuery UI (si se han mostrado o no). Parece que no puedo encontrar un selector que me lleve allí. He intentado ambos .ui-dialog y .ui-dialog-content sin éxito.Cómo encontrar todos los cuadros de diálogo en JQuery

Como intento hacer un método genérico, no sabré los ID de los diálogos que pueden haberse creado.

Estoy usando el siguiente código para probar. Funciona si especifico una identificación de diálogo (#mydialog), pero en producción, no los sabré.

$("div.ui-dialog").bind("dialogclose", function(event, ui) { 
    window.alert("close fired"); 
} 

Respuesta

7

¿Sus cuadros de diálogo tienen una clase común con la que puede seleccionarlos? Si todos ellos tienen la clase "-diálogo de interfaz de usuario", entonces esto va a funcionar:

$(".ui-dialog") 

Su ejemplo de

$("div.ui-dialog") 

pide que seleccione todos los divs con una clase de interfaz de usuario de diálogo, lo que probablemente debería también funcionan siempre que la clase se otorgue a un elemento div.

¿Su problema podría ser que vincula los elementos del diálogo antes de que existan? Puede que prefiera la función .live() para que se vincule con los cuadros de diálogo creados en cualquier punto y no solo con los que existen cuando se llama a la función.

Publicar un fragmento de HTML ayudaría.

+0

cambiar la llamada a .live() resuelto el problema Para referencia futura, se añade la clase ui-diálogo (y un par de otros en mi aplicación!) por JQuery UI, entonces el código anterior, con el cambio a live() en lugar de bind() es genérico y debería funcionar en cualquier lugar. –

2

Puede utilizar esta:

$(":ui-dialog").each(function(){ 
    "enter your code here" 
}) 
+0

debería ser. en lugar de: –

+1

No lo sé porque para mí ".ui-dialog" no se ejecuta, pero solo ": ui-dialog" – Charlestown

+0

Esto funciona muy bien. La selección por clase debería funcionar normalmente, pero no hay garantía de que solo se usen diálogos. Este es un jQuery-meta-selector, (como: visible), que está garantizado para obtener todos los cuadros de diálogo y nada más. –

Cuestiones relacionadas