显示引导程序模式时,可以使用诸如
之类的代码轻松检索关联的数据$('#myModal').on('show.bs.modal', function (e) {
var id = $(e.relatedTarget).data('id');
alert(id);
}
关闭引导程序模式是否可能相同?
特别是当通过特定按钮(即,确认按钮,而不是取消按钮)关闭时?模态内部或relatedTarget
事件中的任何button
似乎都无法使用hidden.bs.modal
。
在下面的游乐场data-id
中,如果以类似方式单击modal
,则在模态主体中单击data-id
的“是”,则属性值应显示在删除按钮下方:
$(document).ready(function () {
$('#deleteModal').on('show.bs.modal', function (e) {
$('#testOutput,#testOutput2').text('');
var id = $(e.relatedTarget).data('id');
$('#deleteId').text(id || 'id retrieval failed');
});
$('#deleteModal').on('hidden.bs.modal', function (e) {
var id = $(e.relatedTarget).data('id'); //does not work
$('#testOutput2').text(id || '"hidden.bs.modal" id retrieval failed');
});
$('#confirmDeleteBtn').click(function (e) {
var id = $(e.relatedTarget).data('id'); //does not work
//var id = $(this).closest('.modal').data('id'); //doesnt work neither
$('#testOutput').text(id || '"btn.close .modal" id retrieval failed');
});
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="col offset-3">
<div class="d-flex">
<button class="mt-4 btn btn-primary" data-toggle="modal" data-target="#deleteModal" data-id="42">delete record 1</button>
<button class="mt-4 btn btn-primary" data-toggle="modal" data-target="#deleteModal" data-id="123">delete record 2</button>
</div>
<h5 class="mt-4 text-danger" id="testOutput"></h5>
<h5 class="text-danger" id="testOutput2"></h5>
</div>
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalTitle">Confirm delete</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Delete record <span class="font-weight-bold text-danger" id='deleteId'></span>?</p>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" id="confirmDeleteBtn" data-dismiss="modal">Yes</button>
<button class="btn btn-outline-secondary" id="cancelDeleteBtn"type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
请注意,打开id
的{{1}}不是恒定的,即,有许多删除button
能够打开单个对话框。
答案 0 :(得分:1)
您可以将data-id
属性设置为input
内的隐藏modal
,并仅从此处获取id
。
尝试下面的代码-
$(document).ready(function () {
$('#deleteModal').on('show.bs.modal', function (e) {
$('#testOutput,#testOutput2').text('');
var id = $(e.relatedTarget).data('id');
$('input.delete-btn-id').val(id);
$('#deleteId').text(id || 'id retrieval failed');
});
$('#deleteModal').on('hidden.bs.modal', function (e) {
var id = $('input.delete-btn-id').val(); //it's working now
$('#testOutput2').text(id || '"hidden.bs.modal" id retrieval failed');
});
$('#confirmDeleteBtn').click(function (e) {
var id = $('input.delete-btn-id').val(); //it's working now
$('#testOutput').text(id || '"btn.close .modal" id retrieval failed');
});
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="col offset-3">
<div class="d-flex">
<button class="mt-4 btn btn-primary" data-toggle="modal" data-target="#deleteModal" data-id="42">delete record 1</button>
<button class="mt-4 btn btn-primary" data-toggle="modal" data-target="#deleteModal" data-id="123">delete record 2</button>
</div>
<h5 class="mt-4 text-danger" id="testOutput"></h5>
<h5 class="text-danger" id="testOutput2"></h5>
</div>
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="deleteModalTitle">Confirm delete</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Delete record <span class="font-weight-bold text-danger" id='deleteId'></span>?</p>
<input type="hidden" val="" class="delete-btn-id"/>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" id="confirmDeleteBtn" data-dismiss="modal">Yes</button>
<button class="btn btn-outline-secondary" id="cancelDeleteBtn"type="button" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
答案 1 :(得分:0)