拥有多个Jquery对话框,一次只关闭一个实例

时间:2010-12-15 18:55:56

标签: javascript jquery yui

我正在尝试在同一站点中实现Jquery的对话框的多个实例。问题是我有两个实例,我使用new'able函数启动,如下所示:

function Modal(param) {
   this.modal = null;var that = this;
   var init = funciton (param) {
     that.setupWindow(param);
   }
   this.setupWindow = function (param) {
     var selector = param.selector;
     var params = {} // dialog options go here 
     this.modal = $(selector);
     this.modal.dialog(params);
   }
}

var f_inst = new Modal({selector: '#f_modal'});
var s_inst = new Modal({selector: '#s_modal'});

问题: 如果我调用f_inst.modal.dialog('close')或s_inst.modal.dialog('close'),此操作实际上将关闭对话框的两个实例。

这两个对话框使用两个不同的模板来渲染它们。

如果这是jquery ui对话框中的默认行为,那么有没有人有更好的解决方案?

YUI 2容器模态小部件在尝试拥有容器小部件的多个实例时非常有用。我试图找到一个提供类似功能的模态。

提前致谢。

-Eric

1 个答案:

答案 0 :(得分:0)

我认为你想在所有情况下将其改为

function Modal(param) {
   var that = this;
   that.modal = null;

   var init = funciton (param) {
     that.setupWindow(param);
   }

   that.setupWindow = function (param) {
     var selector = param.selector;
     var params = {} // dialog options go here 
     that.modal = $(selector);
     that.modal.dialog(params);
   }
}

var f_inst = new Modal({selector: '#f_modal'});
var s_inst = new Modal({selector: '#s_modal'});

我没有对此进行测试 - 但我相信this.setUpWindow与Modal函数有关,只有一个函数,即使你新建多个实例它们引用相同的对象/函数

通过将所有内容连接到该var,您将实际获得单独的实例