Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新访问引导4模式确认_Javascript_Jquery_Twitter Bootstrap_Bootstrap Modal - Fatal编程技术网

Javascript 重新访问引导4模式确认

Javascript 重新访问引导4模式确认,javascript,jquery,twitter-bootstrap,bootstrap-modal,Javascript,Jquery,Twitter Bootstrap,Bootstrap Modal,我想用Bootstrap4创建一个“灵活的”确认对话框,因为我不想自己硬编码每个确认模式/动作 所以,用一个标准的模态,比如 <div class="modal fade" tabindex="-1" role="dialog" id="msgModal"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div

我想用Bootstrap4创建一个“灵活的”确认对话框,因为我不想自己硬编码每个确认模式/动作

所以,用一个标准的模态,比如

<div class="modal fade" tabindex="-1" role="dialog" id="msgModal">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="msgModalTitle">Modal title</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body" id="msgModalBody">
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Doch nicht</button>
                <button type="button" class="btn btn-primary" id="btnModelConfirmMessage">OK</button>
            </div>
        </div>
    </div>
</div>
我认为,通过将“动作”部分作为函数发送,只要单击“确定”按钮,就会出现异常

就像一个符咒,但它有一个主要的错误

事件处理程序似乎停留在模式上,即,如果我显示并隐藏模式,OK按钮将触发函数两次

在其他人中,我找到了这篇文章 建议将click()事件移到外部的位置。我相信这会对那个特定的任务起作用,但是我会失去这个功能


因此,如何使用
hide.bs.modal
事件解除处理程序的绑定?

阅读jquery文档后,答案相当简单:

更改:

$('#btnModelConfirmMessage').on('click',function () {
        fun();
        $('#msgModal').modal('hide');
});
然后在
hide.bs.modal
事件上添加一个新调用

$('#msgModal').on('hide.bs.modal',function () {
        $('#btnModelConfirmMessage').off();
});
这将删除先前添加的处理程序,因此我们不会堆叠事件

希望有人会觉得这个有用:))

干杯, 丹尼尔

$('#msgModal').on('hide.bs.modal',function () {
        $('#btnModelConfirmMessage').off();
});