【问题标题】:How to execute a function after modal open?模态打开后如何执行功能?
【发布时间】:2019-08-18 18:05:33
【问题描述】:

我在模态中添加了一个Bootstrap Wizard,并且只有当DOM 上实际存在Wizard 时,我才需要初始化它,因为我必须在模态关闭时计算width,如果我执行:

$('.card-wizard').width()

我得到:0,当模态打开时,如果我执行上面相同的命令,我得到 465。问题是我必须在模态打开之后计算width,否则width() 方法将返回 0。

到目前为止我尝试的是:

$('a[href="#account"]').on('shown.bs.tab', function(){
    $('.card-wizard').bootstrapWizard({
         onInit: function(tab, navigation, index){
            let width = $('.card-wizard').width();
         }
    });
});

标签是这样定义的:

<div class="wizard-navigation">
    <ul class="nav nav-pills">
        <li class="nav-item">
            <a class="nav-link active" href="#account" data-toggle="tab" role="tab">
                Account
            </a>
        </li>

向导包含在使用$('#member-modal').modal('show');打开的member-modal

有没有办法在模态显示后初始化BootStrap Wizard

【问题讨论】:

    标签: javascript jquery bootstrap-4 twitter-bootstrap-wizard


    【解决方案1】:

    宽度为 0,因为您的元素位于隐藏的模式中。

    您可以使用.show( complete ) 解决方法。

    sn-p:

    $('#exampleModal').show('show', function() {
        var x = $('.wizard').width();
        $('#exampleModal').hide();
        console.log('width: ' + x);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="http://www.bootstrapwizard.com/demo/bootstrap-wizard.css">
    <script src="http://www.bootstrapwizard.com/demo/bootstrap-wizard.min.js"></script>
    
    
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
        Launch demo modal
    </button>
    
    <!-- Modal -->
    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
         aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body wizard">
                    <ul class="nav nav-wizard">
                        <li>
                            <a href="#step1">Step 1</a>
                        </li>
                        <li>
                            <a href="#step2">Step 2</a>
                        </li>
                        <li>
                            <a href="">Step 3</a>
                            <ul class="nav nav-wizard">
                                <li>
                                    <a href="#step3a">Step 3A</a>
                                </li>
                                <li>
                                    <a href="#step3b">Step 3B</a>
                                </li>
                                <li>
                                    <a href="#step3c">Step 3C</a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#step4">Step 4</a>
                            <ul class="nav nav-wizard">
                                <li>
                                    <a href="#step4a">Step 4A</a>
                                </li>
                                <li>
                                    <a href="#step4b">Step 4B</a>
                                </li>
                                <li>
                                    <a href="#step4c">Step 4C</a>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <a href="#step5">Step 5</a>
                        </li>
                    </ul>
    
                    <div class="wizard-pane" id="step1">
                        <h3>Step 1</h3>
                    </div>
    
                    <div class="wizard-pane" id="step2">
                        <h3>Step 2</h3>
                    </div>
    
                    <div class="wizard-pane" id="step3a">
                        <h3>Step 3A</h3>
    
                        <p>Step 3 href is empty, so the first child is selected</p>
                    </div>
    
                    <div class="wizard-pane" id="step3b">
                        <h3>Step 3B</h3>
                    </div>
    
                    <div class="wizard-pane" id="step3c">
                        <h3>Step 3C</h3>
                    </div>
    
                    <div class="wizard-pane" id="step4">
                        <h3>Step 4</h3>
                    </div>
    
                    <div class="wizard-pane" id="step4a">
                        <h3>Step 4A</h3>
                    </div>
    
                    <div class="wizard-pane" id="step4b">
                        <h3>Step 4B</h3>
                    </div>
    
                    <div class="wizard-pane" id="step4c">
                        <h3>Step 4C</h3>
                    </div>
    
                    <div class="wizard-pane" id="step5">
                        <h3>Step 5</h3>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    <button type="button" class="btn btn-primary">Save changes</button>
                </div>
            </div>
        </div>
    </div>

    【讨论】:

      【解决方案2】:

      我很欣赏 gaetano 的解决方案,但我会提出另一种解决方案,在演出活动中添加:

      $('#member-modal).focus();
      

      然后创建:

      $('#member-modal').on('focus', function () {
          //init wizard..
      });
      

      【讨论】:

        猜你喜欢
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多