0

我已将我的 jquery 对话框内容放在一个 div 中。但是每当我以这种方式初始化对话框时:

$(".uof_add_form").dialog({
  autoOpen : false,
  height : 500,
  width : 600,
  modal : true,
  buttons : {
   "Done" : function() {
    $(this).close();
  }
  }
});

内容从我的 div 中删除。因此我不能使用

$("#new_form").on("click",".add_level", function(){
        var wrapper_data = $(this).parent().parent().parent().parent();
        wrapper_data.find(".uof_add_form").dialog("open");

});

打开我的对话框。

由于我的内容是动态生成的,因此我需要使用$(this).

有什么方法可以让我的内容留在我的 div 中?

display:none我更改了我的代码以通过这种方式在我的 div上进行的单击本身进行初始化:-

$("#new_form").on("click",".add_level", function(){
    var wrapper_data = $(this).parent().parent().parent().parent();
    wrapper_data.find(".add_level_pop").dialog({autoOpen : true, height : 500,width : 600,modal : true, buttons : {   "Done" : function() {  $(this).dialog('close'); } } });

});

对话框在第一次单击时打开,但在第二次单击时对话框不会被触发,因为内容已在对话框初始化时转移到不同的位置。

我还在jsfiddle上添加了一个示例,请在此处查看

4

2 回答 2

1

虽然我不确定我是否理解您最初的问题,但通过查看小提琴中的代码,您可能需要考虑:

  • 当你已经有一个时,在你的选择器中省略类限定符ID,它会粘在对话框元素上,所以你总是可以<div>DOM小提琴v3)中找到你的
  • 在加载时将其保存<div>到变量中,这样您就可以在不查询 DOM 的情况下访问它(小提琴 v4

在您的小提琴的两个更新版本中,对话框会在第二次单击时打开,如果这是您正在寻找的。希望能帮助到你。


当您尝试解决更通用的情况时,我已在另一个小提琴版本中相应地更新了您的示例。.data()对话框 div 使用该函数保存在按钮上。要打开对话框,使用保存的对话框。

于 2013-04-09T09:04:56.810 回答
0

使用的返回值.dialog()作为句柄:

var handle = $(".uof_add_form").dialog({
 [...]
});

然后在某个时候,

handle.dialog("open");
于 2013-04-08T14:26:37.470 回答