javascript - 在 Bootstrap Modal 上调用两次或更多次的回调函数

标签 javascript jquery twitter-bootstrap modal-dialog

我在创建将显示 Bootstrap 模态对话框的自定义 JQuery 插件时遇到问题。自定义插件需要回调函数作为参数。

问题是模态对话框调用两次,回调也调用两次,等等。

这里是代码:

HTML

<a href="#" class="confirm_delete">test modal</a>

<div class="modal fade" id="general_modal" tabindex="-1" role="dialog" aria-labelledby="general_modalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
             <h4 class="modal-title" id="general_modal_title">Set Title Here</h4>

        </div>
        <div class="modal-body">set modal content here</div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default close_button" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary action_button">Save changes</button>
        </div>
    </div>
</div>

Javascript

(function ($) {
$.fn.showDialog = function (options, callback) {
    $('#general_modal').modal();
    $('#general_modal .action_button').on('click', function () {
        callback();
    });
}
}(jQuery));

$('.confirm_delete').click(function (e) {
    e.preventDefault();
    $(this).showDialog(null, function () {
        alert('xxx');
    });

});

演示:http://jsfiddle.net/kJn47/2/

最佳答案

每次运行 showDialog 时,您都会重新绑定(bind)模态和点击事件。以下是防止事件每次都重新附加的方法:

(function ($) {
    $.fn.showDialog = function (options, callback) {
        $('#general_modal').unbind().modal();
        $('#general_modal .action_button').unbind().on('click', function () {
            callback();
        });
    }
}(jQuery));

$('.confirm_delete').click(function (e) {
    e.preventDefault();
    $(this).showDialog(null, function () {
        alert('xxx');
    });

});

关于javascript - 在 Bootstrap Modal 上调用两次或更多次的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969896/

相关文章:

javascript - 水平居中显示 : table-row 的 div 内容

JavaScript OOP Object.create();

javascript - 附加到 Jquery 对象的事件在重新插入 DOM 时未触发

jquery - Django 休息框架 : Upload file via AJAX

JavaScript 忽略 true 和 false

javascript - 从两个数组之间的差异获取百分比值javascript

javascript - 为什么 <nav> 导航栏元素放置在容器外部?

php - 提交我的联系表时,我收到 "No arguments Provided"

javascript - bootstrap-select:选项未出现在下拉列表中

javascript - 如何使用 JQuery UI Sortable 防止拖放时表行出现 "collapsing"?