javascript - 单击按钮时创建多个实例 jQuery UI 对话框

标签 javascript jquery html jquery-ui jquery-ui-dialog

我想创建多个实例 jQuery 对话框 UI。我还想创建具有相同标题的每个 jQuery 对话框 UI 的多个克隆。

如果我单击“打开对话框 1”,则会打开“基本对话框 1”。如果我再次单击“打开对话框 1”,它应该生成具有相同标题的基本对话框 1 的克隆。

如果我单击“打开对话框 2”。则将打开“基本对话框 2”。如果我再次单击“打开对话框 2”,它应该会生成具有相同标题的基本对话框 2 的克隆。

现在屏幕上应该可以看到四个对话框。

示例:

1) 同样,在 Windows 中我们可以多次打开“此电脑”。
2) 多次文件资源管理器。

$(function() {
  $('.dialog').dialog({
    autoOpen: false
  });
  $('.opener').click(function() {
    var d = $('.dialog').clone().appendTo('body'),
      tab = $(this).attr('alt') - 1;
    d.dialog({
      autoOpen: false,
      close: function(e, ui) {
        $(this).dialog('destroy').remove();
      }
    });
    console.log(tab);
    d.find('.dtabs').tabs({
      active: tab
    });
    d.dialog('open');
    $(this).data('id');
  });
});
<div class="dialog" id="dialog1" title="Basic dialog 1">
</div>
<div class="dialog" id="dialog2" title="Basic dialog 2">
</div>
<div class="dialog" id="dialog3" title="Basic dialog 3">
</div>
<input value="Open Dialog 1" type="button" class="opener" data-id="#dialog1" />
<input value="Open Dialog 2" type="button" class="opener" data-id="#dialog2" />
<input value="Open Dialog 3" type="button" class="opener" data-id="#dialog3" />

最佳答案

您可以使用data()方法找到目标对话,然后克隆它,如下所示:

$(function() {
  $('.opener').click(function() {
    var targetSelector = $(this).data('id');
    var $target = $(targetSelector);
    var d = $target.clone().appendTo('body');
    d.dialog({
      close: function(e, ui) {
        $(this).dialog('destroy').remove();
      }
    });
  });
});
#dialog1,
#dialog2,
#dialog3 {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link href="//code.jquery.com/ui/1.11.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet" />
<div class="dialog" id="dialog1" title="Basic dialog 1"></div>
<div class="dialog" id="dialog2" title="Basic dialog 2"></div>
<div class="dialog" id="dialog3" title="Basic dialog 3"></div>
<input value="Open Dialog 1" type="button" class="opener" data-id="#dialog1" />
<input value="Open Dialog 2" type="button" class="opener" data-id="#dialog2" />
<input value="Open Dialog 3" type="button" class="opener" data-id="#dialog3" />

关于javascript - 单击按钮时创建多个实例 jQuery UI 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37063962/

相关文章:

javascript - 将图像固定到位,使其跟随滚动到某个点

javascript - 图库功能似乎被调用了两次

javascript - 当我在移动 Bootstrap 上打开网站时,导航栏不会折叠

javascript - 谷歌 OneClick 技术

javascript - 如何在 AngularJS 中注入(inject) Controller ?

javascript - 两个浏览器选项卡中的相同 Vue.js 组件使 <select> 镜像其选定值

javascript - toLocaleString 不适用于所有浏览器中小于 10000 的数字

jquery - 更改主干中单击事件的 css 可见性

php - 在 php 中获取 url id 并在 html 中显示结果

html - 当我将鼠标悬停在一个词上时,如何使 css 不移动整个页面?