2012-12-19 17 views
5

Mam kilka okien dialogowych, które otwierają się tenwykryć, kiedy każdy okno dialogowe jQuery

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

Problem jest, że mam setki tych dialogach. Nie chcę ręcznie tworzyć atrybutu open: dla każdego z nich. Czy jest jakiś sposób mogę monitorować cały dokument dla dialogowym Otwieranie takich jak

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

Czy próbowałeś ustawić 'class' dla okna dialogowego i sprawdź, czy jest ono ustawione na' class' –

+1

. Chciałbyś użyć atrybutu class zamiast atrybutu id. –

+0

Zakładając, że

ma klasę taką jak
, jak mogę sprawdzić, czy jest otwarta? – user974896

Odpowiedz

8

Od jQuery API:

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

Więc można zrobić to, co powiedział pan zapewne:

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

Działa pięknie. wielkie dzięki! – user974896

0

Jeśli Twoje okna dialogowe są zawsze tworzone w ten sam sposób, możesz użyć prostej metody fabrycznej:

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