Bootstrap 3 模态事件 (Hidden.Bs.Modal) 不断重复

Bootstrap 3 Modal Event (Hidden.Bs.Modal) Keeps Repeating

我有 6 张图片以不同的 6 种不同模式 windows 加载,它们每个都有一个下一步按钮和一个关闭按钮。下一个按钮使用以下 jquery 代码:

    $('#nextModal12').click(function() {
        $('#featuresModal1').modal('hide');
        $('#featuresModal1').on('hidden.bs.modal', function () {
            $('#featuresModal2').modal('show');
            document.getElementById('#featuresModal1').style.display="none";
        });
    });

    $('#nextModal23').click(function() {
        $('#featuresModal2').modal('hide');     
        $('#featuresModal2').on('hidden.bs.modal', function () {
            $('#featuresModal3').modal('show');
            document.getElementById('#featuresModal2').style.display="none";                            
        });
    });     

但是,问题是:即使我关闭/隐藏第一个模态('#nextModal12')通过点击关闭按钮而不是下一个,出现第二个模态。

我相信这是因为 hidden.bs.modal 函数被拾取并再次调用,即使我没有单击下一步按钮。 如何防止脚本不加选择地获取 hidden.bs.modal 函数?

不要在模态点击时一次又一次绑定hidden.bs.modal,绑定一次就好,

$('#nextModal12').click(function() {
    $('#featuresModal1').modal('hide');
});
 $('#featuresModal1').on('hidden.bs.modal', function () {
    $('#featuresModal2').modal('show');
    $(this).hide();// you can use hide function
});

$('#nextModal23').click(function() {
    $('#featuresModal2').modal('hide');     
});   
$('#featuresModal2').on('hidden.bs.modal', function () {
    $('#featuresModal3').modal('show');
    $(this).hide(); 
});

或者,您可以试试

$('#nextModal12').click(function() {
    $('#featuresModal1').modal('hide'); // hide first
    $('#featuresModal2').modal('show'); // show second
});

$('#nextModal23').click(function() {
    $('#featuresModal2').modal('hide');
    $('#featuresModal3').modal('show');
});

尝试使用 .one 函数代替 .on。当您使用 .on() 时,您的回调将一次又一次地重复,因为您为每次点击再次绑定它;

$('#nextModal12').click(function() {
    $('#featuresModal1').modal('hide');
    $('#featuresModal1').one('hidden.bs.modal', function () {
        $('#featuresModal2').modal('show');
    });
});

$('#nextModal23').click(function() {
    $('#featuresModal2').modal('hide');     
    $('#featuresModal2').one('hidden.bs.modal', function () {
        $('#featuresModal3').modal('show');                          
    });
});