2012-12-19 120 views
5

我有几个对话框,像这样检测jQuery的

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

打开的问题是,我有数百个这样的对话框。我不想手动为每个人创建一个open:属性。有没有什么办法可以监视一个对话框打开,如

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

你试过设置'class'的对话框,并在'class' –

+1

你想使用一个类的属性,而不是一个id属性复选框bacsed。 –

+0

假设

确实有类如
,我该如何检查它是否打开? – user974896

回答

8

从jQuery的API整个文档:

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

所以,你可以做你可能说的话:

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

精美的作品。非常感谢! – user974896

0

如果您的对话框始终创建以同样的方式,为什么不使用简单的工厂方法是这样的:

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