JQuery - 如何在多个 JQuery 克隆对话框中定位正确的按钮?

JQuery - How to target correct button in multiple JQuery cloned Dialogs?

我正在克隆多个个JQuery实例Dialog:

$('#button').click(function() {
    $('.dialog').clone().appendTo('body').removeClass('dialog').dialog({
        width: '300',
        height: '200',
        dialogClass: 'dialogClass',
        open: function(event, ui) {
            $(".dialogClass").children(".ui-dialog-titlebar").append("<button class='dialog_pdf_button' type='button'>PDF</button>");
        }
    });
});

Dialog open 上,然后我将带有 class='dialog_pdf_button' 的按钮附加到克隆的 Dialog 标题栏。

我需要在克隆的 Dialog 上定位正确的 PDF 按钮以在单击相关 PDF 按钮时执行操作(将 Dialog 中的文本保存为 PDF...)。

如何在克隆的 Dialogs 中的正确 PDF 按钮上找到并定位点击事件?

Fiddle

只需在追加之前将事件绑定到元素。

$(".dialogClass").children(".ui-dialog-titlebar").append(function () {
  var button = $("<button class='dialog_pdf_button' type='button'>PDF</button>");
  button.click(function () {
    // Event handler
  });

  // Or other event..

  return button;
});

您可以使用 $(HTML_TEMPLATE)

动态创建 jquery 元素

我建议在创建对话框后制作按钮。这样你就可以将它分配给对话框并分配一个回调。

这是一个工作示例:

$(function() {
  $('#button').click(function() {
    var c = $(".ui-dialog").length;
    var dlg = $("<div>").appendTo('body');
    dlg.dialog({
      width: '300',
      height: '200',
      dialogClass: 'dialogClass',
      title: "Dialog " + (c + 1)
    });
    var btn = $("<button>", {
      class: "ui-dialog-titlebar-pdf-btn",
      type: "button"
    }).html("PDF").button().click(function(e) {
      console.log("PDF Button Clicked in " + dlg.dialog("widget").find(".ui-dialog-title").text());
    }).appendTo(dlg.dialog("widget").find(".ui-dialog-titlebar"));
  });
});
.dialogClass .ui-dialog-titlebar span.ui-dialog-title {
  width: 75%;
}

.dialogClass .ui-dialog-titlebar button.ui-dialog-titlebar-pdf-btn {
  font-size: .65em;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<button id="button">Make Dialog</button>

Dialog 初始化后,我们可以向其小部件添加项目,例如 PDF 按钮。这为您提供了对对话框本身和按钮的引用。因此,如果您必须获取对话框的特定部分、标题或 body,回调可以做到这一点。