如何在twitter bootstrap模式中提供关闭按钮的回调函数?

时间:2015-06-17 17:05:46

标签: jquery twitter-bootstrap twitter-bootstrap-3 modal-dialog bootstrap-modal

我正在使用Bootstrap 3.x并使用模式显示"您确定要这样做吗?"取消和确认按钮的消息类型如下所示。

<div id="modal" class="modal fade" role="dialog" data-backdrop="static">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h3 class="modal-title">Confirm Delete</h3>
            </div>
            <div class="modal-body">
                <p>Are you sure you wish to delete this item?</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary" data-dismiss="modal" data-dismisscallback="deleteCallback">Confirm</button>
            </div>
        </div>
    </div>
</div>

我也在处理模态隐藏事件,如下所示。

$('#modal').on('hidden.bs.modal', function () {
  //TODO: invoke callback method if provided
});

我在“确认”按钮上添加了额外的data-dismisscallback属性,但不确定如何在下面的隐藏事件处理程序中读取和调用此回调方法。任何提示/帮助解决这个问题都表示赞赏。

它不一定是这种方式,在模态关闭时启用回调机制的任何其他方式都应该是可接受的。

1 个答案:

答案 0 :(得分:0)

阅读http://getbootstrap.com/javascript/#modals-eventshttp://github.com/jschr/bootstrap-modal/issues/224后 我确信e.relatedTarget不可用于隐藏/隐藏事件的开箱即用。所以我已经制定了以下机制,但不是很好,以解决这个问题。

我删除了data-dismiss属性,同时保持自定义属性data-dismisscallback指定回调函数名称。

<div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
    <button type="button" class="btn btn-primary" data-dismisswithcallback="myCallback">Confirm</button>
</div>

在全局事件处理程序中,我手动关闭模式并调用回调方法。

$("button[data-dismisscallback]").unbind("click").bind("click", function (e) {
    $(this).closest(".modal").hide();

    var callback = $(this).data("dismisscallback");
    if (callback) {
        var fn = window[callback];
        if (typeof fn === 'function') {
            fn();
        }
    }
});