【问题标题】:bootstrap collapse not working when creating dyanmically动态创建时引导崩溃不起作用
【发布时间】:2019-11-02 08:02:03
【问题描述】:

我正在通过 ajax 调用获取我的内容并在运行时创建所有可折叠面板。 但是切换功能不能以这种方式工作。我正在使用骨干木偶集合和项目视图来创建我的面板组。

我检查了静态内容,它适用于静态数据。

我检查了几个链接,但在我的情况下似乎没有任何效果。

How to make Twitter Bootstrap Collapse work on dynamically loaded html using ajax

https://github.com/twbs/bootstrap/issues/2274

这是我的 html 的样子:

<div id="accordion" class="panel-group">
    <div class="panel panel-default">
        <div class="panel-heading">
            <ul class="home_nav" data-toggle="collapse" data-parent="#accordion"
                data-target="NewsMaintenanceMenu">
                ...
            </ul>
            <span class=""><i class="glyphicon glyphicon-chevron-right"></i></span>
        </div>
        <div id="NewsMaintenanceMenu" class="panel-collapse collapse">
            <div class="panel-body">
                <table class="table table-striped">
                    <tbody>
                        ....
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

【问题讨论】:

    标签: javascript jquery twitter-bootstrap backbone.js marionette


    【解决方案1】:

    我暂时用过jQuery

       $(".panel").on("click", function(e){
                  var $_target =  $(e.currentTarget);
                  var $_panelBody = $_target.find(".panel-collapse");
                  if($_panelBody){
                    $_panelBody.collapse('toggle')
                  }
            })
    

    【讨论】:

      【解决方案2】:

      实现此目的的另一种方法...

      function collapseOnClick(collapseTrigger){
          /**
         * Manually add collapse on click event.
         * 
         * Because dynamically added Bootstrap collapse elements don't
         * work automatically for me most of the time.
         * 
         * 'data-target' is a selector for the collapsing element as per
         * the Bootstrap documentation. 
         * https://getbootstrap.com/docs/4.3/components/collapse/#via-data-attributes
         *
         * @param {jQuery} collapseTrigger Trigger element for the collapse.
         * 
         */ 
          var target = collapseTrigger.attr("data-target")
          collapseTrigger.on('click',function(){
              $(target).collapse('toggle')
          })
      }

      【讨论】:

        【解决方案3】:

        在新创建的面板上调用 .collapse() 来获取 ajax 成功。如果不知道怎么做,请提供代码sn-p。

        【讨论】:

        • 我与骨干木偶一起工作,并在渲染视图后尝试调用 .collapse()。但这对我不起作用。我已经用代码 sn-p 更新了我的问题。
        • 能否提供插入面板的JS-sn-p?
        • 我认为他使用的是Backbone,完整的sn-p不能在这里上传。 :)
        【解决方案4】:

        /*** 我为动态面板主体创建了动态 ID*************/

        <div class="col-sm-4" ng-repeat="Category in categoryList">
        <!-- Category -->
        <div class="dropdown">
            <button class="dropbtn" ng-bind="Category.name"></button>
            <div class="dropdown-content">
                <a href="" title="">Business <span class="pull-right">13</span></a>
                <a href="" title="">Technology <span class="pull-right">13</span></a>
                <a href="" title="">Web <span class="pull-right">13</span></a>
                <a href="" title="">Ecommerce <span class="pull-right">13</span></a>
                <div class="panel-group" id="accordion">
                    <div class="panel panel-default">
                      <!-- <div class="panel-heading"> -->
                        <div class="panel-title">
        
                <a href="#{{Category.name}}" data-toggle="collapse" data-parent="#accordion" title="">View More <span class="pull-right"></span></a>
               </div>
            <!-- </div> -->
            <div id="{{Category.name}}" class="panel-collapse collapse ">
                <div class="panel-body">
                        <a href="" title="">Business <span class="pull-right">13</span></a>
                        <a href="" title="">Technology <span class="pull-right">13</span></a>
                        <a href="" title="">Web <span class="pull-right">13</span></a>
                        <a href="" title="">Ecommerce <span class="pull-right">13</span></a>
                </div>
              </div>
              </div>
              </div>
              </div>
              </div>
            </div>
        

        【讨论】:

        • 我为面板主体创建了动态 ID。为我工作。
        • 我确实做到了,但它没有用......还尝试使用索引作为@Input 也没有工作......
        猜你喜欢
        • 2013-06-17
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        • 1970-01-01
        相关资源
        最近更新 更多