2012-12-19 17 views
5

Ho diverse finestre di dialogo che si aprono come questoRilevare quando si apre qualsiasi finestra jQuery

$("#dialog").load(URL); 
$("#dialog").dialog(
      attributes, 
      here, 
      close: function(e,u) { 
        cleanup 
      } 

Il problema è che ho centinaia di queste finestre di dialogo. Non voglio manualmente creare un attributo open: per ognuno. C'è un modo posso monitorare l'intero documento per un dialogo aperto, come

$(document).on("open","#dialog",function() { 
    Do something 
}) 
+2

Avete provato ad impostare un 'class' per la finestra di dialogo e controllare la' classe' –

+1

Si vorrebbe usare un attributo di classe piuttosto che un attributo id. –

+0

Supponendo che

abbia una classe come
, come posso verificare se è aperto? – user974896

risposta

8

Da jQuery API:

$(".selector").on("dialogopen", function(event, ui) {}); 

Così si potrebbe fare quello che hai detto, probabilmente:

$("body").on("dialogopen",function(e,u){ 
    alert('dialog open!'); 
}); 
+0

Funziona magnificamente. molte grazie! – user974896

0

Se le tue finestre di dialogo vengono sempre create allo stesso modo, perché non utilizzare un semplice metodo di fabbrica come questo:

var createUrlDialog = function(element, url, dialogOptions) { 
    element.load(url); 
    element.dialog($.extend({}, dialogOptions, { 
     open: function(event, ui) { 
      // do what you want 
     } 
    })); 
} 
Problemi correlati