javascript - 为什么点击模态框内的按钮不会打开另一个模态框?

标签 javascript jquery html twitter-bootstrap modal-dialog

我们有一个 modal在其中嵌套一个按钮。单击我们尝试(在运行时生成并)打开另一个模式,如下所示:

  var createPrintableTable = function(divToAppendTo, newTableId) {
    $("#printer").remove();
    var tbl = $("<table style='display:block;' border='1'/>").attr("id", newTableId);
    var modal = $("<div id='printModal' class='modal' role='dialog' />");
    var modalDialog = "<div class='modal-dialog' />";
    var modalContent = "<div class='modal-content' />";
    var modalBody = "<div class='modal-body' />";
    $(modalBody).html('test modal body');
    $("#" + divToAppendTo).append(modal);
    $(modal).append(modalDialog);
    $(modalDialog).append(modalContent);
    $(modalContent).append(modalBody);
    $(modalBody).append(tbl);
    $(".modal-body").append("<button id='printer' data-toggle='modal' data-target='#printModal' style='float: right; top: -33px; right:40px; position: relative;border: none; font-size: 20px; color: #7f7f7f; background-color: #f8f8f8;'> <i class='fa fa-print' aria-hidden='true'></i> </button>");

    $("#printer").click(function() {
      debugger;
      $("#" + newTableId).css('display', 'block');
      $(modal).modal('show');
    });
  }

  createPrintableTable("myModal", "myModalTable");

它不会在控制台上抛出任何错误,但也不会打开另一个模式。我们哪里错了?

The fiddle

最佳答案

  1. 确保在需要附加元素时始终使用 jQuery 对象(而不是字符串):


var modal = $("<div id='printModal' class='modal' role='dialog' />");
var modalDialog = $("<div class='modal-dialog' />");
var modalContent = $("<div class='modal-content' />");
var modalBody = $("<div class='modal-body' />");

否则新元素不会附加到您认为附加了它们的元素上:)

  1. 当您执行 $(modal).modal('show'); - 它确实显示了,但是点击(在该模式之外)导致它立即关闭。 我们可以使用 show 上的 setTimeout 来解决这个问题:


setTimeout(function() {
    $(modal).modal('show');
}, 0)

这是最终版本:
https://jsfiddle.net/atggf59p/

关于javascript - 为什么点击模态框内的按钮不会打开另一个模态框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245660/

相关文章:

javascript - 在加载时设置 JavaScript 中多个文本区域元素的高度

javascript - 只有当它被拖到无效的 droppable 上时,如何才能让 draggable 恢复到原始位置?

jquery - HTML 选择框,如何将选定选项从一个 <select> 移动/复制到另一个 <select>

javascript - 显示瞬时选中的单选按钮的数量

javascript - Flatbutton(输入处理程序)似乎不起作用

Javascript - 需要仅从 SVG 路径的笔画获取 x 和 y 坐标?

javascript - .filter() 中的函数无法正常工作

javascript - Cody Lindley 所说的 "nodes contained in the collection are either literally part of the live document or a snapshot of the live document"是什么意思?

JavaScript 表单验证

php - 使用javascript输出html时出错