javascript - Bootstrap Accordion 防止在 asp.net 中回发时崩溃

标签 javascript jquery twitter-bootstrap

我有一个 Bootstrap Accordion ,我尝试在回发中重新打开最后打开的 Pane ,就像有人单击我页面上的保存按钮一样。我找到了这个解决方案:Retain Twitter Bootstrap Collapse state on Page refresh/Navigation

但我无法对此发表评论,因为我作为用户没有足够的积分。

由于某些原因,我无法使该功能正常工作:

//when a group is shown, save it as the active accordion group
$("#applicant-accordion").bind('shown', function () {
    var active = $("#applicant-accordion .in").attr('id');
    $.cookie('activeAccordionGroup', active)
});

我正在尝试在 FireBug 中对其进行测试,但我从未接触过 var active 的行。它在 $("#applicant-accordion).bind 行停止。我尝试将 .bind 更改为 .on,因为我的 jQuery 是版本 1.7.2

我很茫然,我希望你能指导我找到解决方案。我在 ASP.NET 中构建它。

<script src="../Scripts/jquery-1.7.2.js" type="text/javascript"></script>
<script src="../Scripts/bootstrap/js/bootstrap.js" type="text/javascript" />
<link href="../Scripts/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js" />

<script type="text/javascript">
    $(document).ready(function () {
        var last = $.cookie('activeAccordionGroup');
        if (last != null) {
            //remove default collapse settings
            $("#applicant-accordion .panel-collapse").removeClass('in');
            //show the account_last visible group
            $("#" + last).addClass("in");
        }
    });

    //when a group is shown, save it as the active accordion group
    $("#applicant-accordion").on('shown', function () {
        var active = $("#applicant-accordion .in").attr('id');
        $.cookie('activeAccordionGroup', active)
    });

</script>

    <div class="accordion" id="applicant-accordion">
        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="btn accordion-toggle" data-toggle="collapse" data-parent="#applicant-accordion" href="#uInfo">Applicant information</a>
            </div>
            <div id="uInfo" class="accordion-body collapse in">
                <div class="accordion-inner">
                </div>
            </div>
        </div>

        <asp:Panel Visible="false" runat="server" ID="assistancePanel">
            <div class="accordion-group">
                <div class="accordion-heading">
                    <a class="btn accordion-toggle" data-toggle="collapse" data-parent="#applicant-accordion" href="#meetgreet">Accommodation and Meet & Greet information</a>
                </div>
                <div id="meetgreet" class="accordion-body collapse">
                    <div class="accordion-inner">
                    </div>
                </div>
            </div>
        </asp:Panel>

        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="btn accordion-toggle" data-toggle="collapse" data-parent="#applicant-accordion" href="#application">Application, documents & options</a>
            </div>
            <div id="application" class="accordion-body collapse">
                <div class="accordion-inner">
                </div>
            </div>
        </div>

        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="btn accordion-toggle" data-toggle="collapse" data-parent="#applicant-accordion" href="#comments">Comments</a>
            </div>
            <div id="comments" class="accordion-body collapse">
                <div class="accordion-inner">
                </div>
            </div>
        </div>

        <div class="accordion-group">
            <div class="accordion-heading">
                <a class="btn accordion-toggle" data-toggle="collapse" data-parent="#applicant-accordion" href="#changelog">Changelog</a>
            </div>
            <div id="changelog" class="accordion-body collapse">
                <div class="accordion-inner" runat="server" id="changelogItems">
                </div>
            </div>
        </div>
    </div>

最佳答案

只是发布我的解决方案:

添加了一个隐藏字段:

<asp:HiddenField ID="hfAccordionIndex" runat="server" />

页面底部的 JavaScript 用于确保 DOM 具有以下元素:

<script type="text/javascript">
    $(document).ready(function () {
        var last = $('#<%= hfAccordionIndex.ClientID %>').val();
        if (last != null && last != "") {
            //remove default collapse settings
            $("#applicant-accordion .collapse").removeClass('in');
            //show the account_last visible group
            $("#" + last).collapse("show");
        }
    });

    //when a group is shown, save it as the active accordion group
    $("#applicant-accordion").on('shown', function () {
        var active = $("#applicant-accordion .in").attr('id');
        $('#<%= hfAccordionIndex.ClientID %>').val(active);
    });
</script>

关于javascript - Bootstrap Accordion 防止在 asp.net 中回发时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24552674/

相关文章:

php - 使用 jquery 增加 attr 的值

javascript - 我的正则表达式的某些部分不起作用

javascript - Bootstrap 将导航栏固定在 div 内

css - 如何在固定大小的多行上使用带有 Bootstrap 4 的卡片?

javascript - 表单 POST 未显示在 Controller 中

javascript - 从另一个网站JS填写表格

javascript - 按升序对对象中的日期属性进行排序 Angularjs/Javascript

javascript - 等待 EmberJS "server"端的属性

javascript - 为什么打开页面时不显示 Google map

twitter-bootstrap - 强制 Kendo UI Chart 使用 Bootstrap 选项卡的全宽