Bootstrap模态框绑定hidden.bs.modal关闭事件不触发问题求助
问题现象
无法为Bootstrap模态框绑定关闭事件,先后尝试通过模态框id #AfterBuy、modal-name属性值zakaz绑定hidden.bs.modal事件,关闭模态框时事件始终未触发,但模态框内按钮绑定的点击事件可正常运行。
初始绑定代码(无效)
按id绑定
$("#AfterBuy").on('hidden.bs.modal', function(){ alert("Hello World!"); });
错误使用属性值作为id绑定
$("#zakaz").on('hidden.bs.modal', function(){ alert("Hello World!"); });
注:第二段代码写法本身存在问题,
zakaz是modal-name自定义属性的值,不是元素id,不能使用#选择器选取。
最终解决方案(事件委托绑定)
使用事件委托将事件绑定到document上,匹配对应属性的模态框元素,即可正常触发事件:
$(document).on('hidden.bs.modal','.modal[modal-name=zakaz]',function () { // 触发后执行的逻辑 });
关联模态框完整代码
<div class="modal actionmodal fade" id="AfterBuy" modal-name="zakaz" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <img src="<?php echo $cur_url; ?>img/logo.png" class="logo" alt=""> <button type="button" OnClick="unknowntest();" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <div class="container"> <div class="row"> <div class="col-md-12"> <?php $elem = getPageTitle('18'); ?> <div class="modal-title <?php echo $elem['title_tr'] ?>"><?php echo $elem['title'] ?></div> <div class="greyline1"></div> </div> </div> <div class="row"> <form> <?php printPage('18'); ?> <div class="col-md-12 zakaz-field"> </div> <div class="col-md-12"> <div class="buttons mt-5"> <?php $elem = getElement('zakaz_print'); ?> <a href="<?php echo $cur_url; ?>order-check" target="_blank" class="btn btn-dark <?php echo $elem['content_tr'] ?> printzakaz"><?php echo $elem['content'] ?></a> <?php $elem = getElement('zakaz_download'); ?> <a href="<?php echo $cur_url; ?>order-check?a=1" class="btn btn-dark downloadzakaz <?php echo $elem['content_tr'] ?>"><?php echo $elem['content'] ?></a> <?php $elem = getElement('zakaz_close'); ?> <button type="button" OnClick="unknowntest();" data-dismiss="modal" class="btn btn-dark <?php echo $elem['content_tr'] ?>"><?php echo $elem['content'] ?></button> </div> </div> </form> </div> </div> </div> </div> </div> <script> function unknowntest() { alert("Modal will be closed."); //document.cookie = "sended-check=0"; } </script> </div>
内容的提问来源于stack exchange,提问作者Jusstarter
相关产品推荐
相关产品推荐

