Javascript TWtiter引导模式显示事件触发多次

Javascript TWtiter引导模式显示事件触发多次,javascript,jquery,events,twitter-bootstrap,Javascript,Jquery,Events,Twitter Bootstrap,当显示的事件已触发时,我正在将单击事件指定给模式中的按钮: modal.on('shown', function(){ modal.on('click', '.modal-confirm', function(e){ ... }); }); 我的问题是,我的模式中有选项卡,切换选项卡时,每次单击选项卡时都会触发modal.show事件,因此每次都会将另一个单击事件分配给按钮。如何防止这种情况发生?Ofc。我可以添加一个布尔值来检查事件是否已分配,但如果不必这样做

当显示的事件已触发时,我正在将单击事件指定给模式中的按钮:

modal.on('shown', function(){
    modal.on('click', '.modal-confirm', function(e){
        ...
    });
});
我的问题是,我的模式中有选项卡,切换选项卡时,每次单击选项卡时都会触发modal.show事件,因此每次都会将另一个单击事件分配给按钮。如何防止这种情况发生?Ofc。我可以添加一个布尔值来检查事件是否已分配,但如果不必这样做,那就太好了:-)


提前感谢

我不知道这是否是一种好的做法,但您可以在模态确认元素上附加一个变量,表示您已经为其分配了click()事件:

modal.on('shown', function(){
    if ($(this).find('.modal-confirm').data('hasEvent') != null) {
        modal.on('click', '.modal-confirm', function(e){
            ...
        });
    }
});

您可以使用具有两个事件的新版本的引导程序
show.bs.tab
show.bs.modal
,或者使用以下代码来防止多个绑定

modal.off('shown').on('shown', function(){
    modal.off('click').on('click', '.modal-confirm', function(e){
        ...
    });
});

事实上,我一开始就使用了事件
show.bs.modal
,但它仍然会多次触发,有点有线。。无法看到它的使用,如果它在切换选项卡时触发,因为示例中也是如此。取消分配事件的好方法,我想我会使用它,直到事件的修复可用。