【问题标题】:Bootstrap 4 collapse save after page reload in desktop only仅在桌面重新加载页面后,Bootstrap 4 折叠保存
【发布时间】:2020-01-09 12:20:21
【问题描述】:

我只想在桌面重新加载页面后保存折叠显示/隐藏。以下示例在使用 LocalStorage 重新加载页面后的桌面视图时默认打开折叠。

我试过下面的例子。

$(document).ready(function () {
    $('a').click(function() {
        //store the id of the collapsible element
        localStorage.setItem('collapseItem', $(this).attr('href'));
    });

    var collapseItem = localStorage.getItem('collapseItem'); 
    if (collapseItem) {
       $(collapseItem).collapse('show')
    }
})

function resize() {
    if ($(window).width() > 992) {
        $('.link').click(function() {
            //store the id of the collapsible element
            localStorage.setItem('collapseItem', $(this).attr('href'));
        });

        var collapseItem = localStorage.getItem('collapseItem');
        if (collapseItem) {
            $(collapseItem).collapse('show')
        }
    } else {

    }
}
$(document).ready(function() {
    $(window).resize(resize);
    resize();
});
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<p>
  <a class="btn btn-primary link" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a>
</p>
<div class="collapse" id="collapseExample">
    <div class="card card-body">
        Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
    </div>
</div>

【问题讨论】:

  • @Gulshan 他想在桌面视图中打开手风琴。所以你的答案是错误的。请再次检查。
  • @saravana 再次检查我的笔。我做了一些修改
  • @Gulshan Perfect.

标签: javascript jquery html css bootstrap-4


【解决方案1】:

您的代码似乎正确。您只需要从顶部删除第一个 $(document).ready 函数,因为您已经调用了底部。另外,我更新了$(window).resize 的代码。

function resize() {
    var collapseItem = localStorage.getItem('collapseItem');
     if ($(window).width() > 992) {
      if (collapseItem) {
        $(collapseItem).collapse('show');
      }
    } else {
      if (collapseItem) {
        $(collapseItem).collapse('hide');
        localStorage.clear();
      }
    }
}
$(document).ready(function () {
  resize();
  $('.link').click(function () {
    //store the id of the collapsible element
    if(localStorage.getItem("collapseItem") !== null) {
        localStorage.clear();
    } else {
        localStorage.setItem('collapseItem', $(this).attr('href'));
    }
  });
});
$(window).resize(resize);
<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
</head>

<body>
  <p>
    <a class="btn btn-primary link" data-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false"
      aria-controls="collapseExample">
      Link with href
    </a>
  </p>
  <div class="collapse" id="collapseExample">
    <div class="card card-body">
      Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim
      keffiyeh
      helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
    </div>
  </div>
</body>

</html>

请在删除浏览器localStorage后尝试代码。

我希望这会有所帮助。

【讨论】:

  • 当我关闭折叠页面重新加载后它仍然打开。该操作应该可以使用 open/close 方法。
  • @Saravana 我已根据您的要求更新了代码。如果这有帮助,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2014-12-23
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 2014-05-12
  • 1970-01-01
相关资源
最近更新 更多