3

我对 Twitter Bootstrap 模式对话框有疑问。
HTML 代码:

<div class="container">
    <div class="delete_dosar">delete</div>
</div>

<!-- Boostrap modal dialog -->
<div id="delete_confirmation" class="modal hide fade" style="display: none; ">
    <div class="modal-header">
        <a href="#" class="close" data-dismiss="modal">x</a>
        <h3>Are you sure?</h3>
    </div>
    <div class="modal-body">
        <div class="paddingT15 paddingB15" id="modal_text">    
        Are you sure with this?
        </div>
    </div>
    <div class="modal-footer">
        <a href="#" class="btn confirm_delete_the_item no_return">yes</a>
        <a href="#" class="btn btn-secondary " data-dismiss="modal">no</a>
    </div>
</div>​

JS代码:

$(function() {
$(".delete_dosar").live('click',function(){

    $('#delete_confirmation').modal("show");
    $('.confirm_delete_the_item').live('click',function(e){
        $('#delete_confirmation').modal("hide");
        //e.preventDefault();
        alert('x');
    });

    return false;
});
});​

代码在这里运行:http: //jsfiddle.net/darkwish02/u7hEv/

如果我单击“删除”和“是”,第一次我只有一个警报,但如果我第二次单击“删除”(不刷新),我将有 2 个警报。

“点击”事件似乎连续运行 2 次。

4

2 回答 2

7

您正在做的方式是,每次单击删除按钮时都会附加一个新的单击处理程序。

您应该将内部单击处理程序插入移出第一个。然后,“是”按钮总是只有一个处理程序。

这个小提琴显示它工作:http: //jsfiddle.net/KSxJs/

$(function() {

    $('.confirm_delete_the_item').live('click', function(e) {
        $('#delete_confirmation').modal("hide");
        //e.preventDefault();
        alert('x');


    });


    /** SETERGERE DE DOSAR DIN PARTEA STANGA **/
    $(".delete_dosar").live('click', function() {

        $('#delete_confirmation').modal("show");

        return false;

    });
});​
于 2012-10-30T18:53:33.920 回答
2

我建议您使用 bootbox 或 bootstrap-dialog 来执行此操作。

看:

http://bootboxjs.com/

http://github.com/nakupanda/bootstrap3-dialog

于 2013-06-05T09:59:21.637 回答