Twitter Bootstrap模式显示多次触发事件

时间:2013-12-04 08:30:25

标签: javascript jquery events twitter-bootstrap

当显示的事件发生时,我正在为模式中的按钮分配一个点击事件:

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

我的问题是我的模态中有标签,当切换标签时,每次单击标签时都会触发modal.shown事件,从而每次都会向按钮发出另一个点击事件。我该如何防止这种情况发生? OFC。我可以添加一个布尔值来检查事件是否已经分配,​​但如果我不必这样做会很好: - )

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用具有两个事件shown.bs.tabshown.bs.modal的新版bootstrap,或使用以下代码来阻止多个绑定

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

答案 1 :(得分:0)

我不知道这是不是很好的做法,但你可以在modal-confirm元素中附加一个变量,说明你已经为它分配了click()事件:

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