我有一个表单,其中使用add more
创建了下一个字段和链接。第一行完美地显示模态窗口,但动态创建的链接不显示模态。动态行创建如下:
$row += '<tr>';
$row += '<td width="20%">';
$row += '<a href="javascript:void(0)" id="showModal'+sl_no+'"> Add Documents/Req. </a>';
$row += '</td>';
$row += '<div class="modal fade" id="modal'+sl_no+'" tabindex="-1" role="dialog">';
$row += '<div class="modal-dialog" role="document">';
$row += '<div class="modal-content">';
$row += '<div class="modal-header">';
$row += '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>';
$row += '<h4 class="modal-title">Modal title</h4>';
$row += '</div>';
$row += '<div class="modal-body">';
$row += '<p>One fine body…</p>';
$row += '</div>';
$row += '<div class="modal-footer">';
$row += '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>';
$row += '<button type="button" class="btn btn-primary">Save changes</button>';
$row += '</div>';
$row += '</div>';
$row += '</div>';
$row += '</div>';
这就是:
$last_tr = $('#indent_item_list tr:last');
$last_tr.after($new_row);
$('#showModal'+sl_no).on('click', function() { alert('fff');
$('#modal'+sl_no).modal('show');
});
但是当我点击Add Documents/Req
时它没有显示模态!怎么解决这个问题?
答案 0 :(得分:1)
在tr中添加div元素不是一个好习惯
你可以做这样的事情
HTML: -
<div class="modals-container">
<div class="modal fade" id="modal1" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
<table class="table" id="indent_item_list">
<tr>
<th>LINK</th>
</tr>
<tr>
<td>
<a href="javascript:void(0)" id="showModal1"> Add Documents/Req. </a>
</td>
</tr>
</table>
<a href="javascript:void(0)" class="btn btn-warning add_more_item btn-sm">Add More Item
Javascript
var sl_no = 1;
$('#showModal1').click(function() {
$('#modal1').modal('show');
});
$('.add_more_item').click(function(e) {
sl_no++;
$new_row = generateARow(sl_no);
$last_tr = $('#indent_item_list tr:last');
//$(".select2").select2("destroy");
$last_tr.after($new_row);
$('#showModal'+sl_no).on('click', function() {
$('#modal'+sl_no).modal('show');
});
item++;
});
function generateARow(sl_no) {
$row = '';
$modal = '';
$row += '<tr>';
$row += '<td width="20%">';
$row += '<a href="javascript:void(0)" id="showModal'+sl_no+'"> Add Documents/Req. </a>';
$row += '</td>';
$row += '</tr>';
$modal += '<div class="modal fade" id="modal'+sl_no+'" tabindex="-1" role="dialog">';
$modal += '<div class="modal-dialog" role="document">';
$modal += '<div class="modal-content">';
$modal += '<div class="modal-header">';
$modal += '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>';
$modal += '<h4 class="modal-title">Modal title</h4>';
$modal += '</div>';
$modal += '<div class="modal-body">';
$modal += '<p>One fine body…</p>';
$modal += '</div>';
$modal += '<div class="modal-footer">';
$modal += '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>';
$modal += '<button type="button" class="btn btn-primary">Save changes</button>';
$modal += '</div>';
$modal += '</div>';
$modal += '</div>';
$modal += '</div>';
$(".modals-container").append($modal);
return $row;
}
答案 1 :(得分:1)
代码中的一些问题:
1)您正在尝试在表元素中追加div。哪个不行。您需要在td中追加div元素,或者为modal设置一个单独的容器。
2)此外,您不需要在追加每行后附加点击事件。您需要使用静态父元素进行事件委派。在当前情况下哪个是表元素。与is一起开始使用属性来定位以id showModal
开头的所有行元素:
$('#indent_item_list').on('click','[id^=showModal]', function() {
$('#modal'+this.id.replace('showModal','')).modal('show');
});
<强> Working Demo 强>
答案 2 :(得分:1)
你的守则没问题。 你遇到的问题是你的模态被添加到一个表中。哪个不适用于bootstrap。
检查你是否可以将模态放在桌子之外,一切都应该可以正常工作。
问候
答案 3 :(得分:0)
替换你的小提琴代码
$('#showModal1').click(function() {
到新代码
$(document).on('click', '[id^=showModal]', function() {