【问题标题】:jQuery Show/Hide not working with Bootstrap 4jQuery Show/Hide 不适用于 Bootstrap 4
【发布时间】:2021-01-08 17:32:09
【问题描述】:

我正在升级到 Bootstrap 4,并注意到我们所有的 jQuery 显示/隐藏在使用隐藏属性时都无法正常工作。如果我在 show() 之后删除 hidden 属性,它可以正常工作。 Bootstrap 3 不需要这样做。

不幸的是,为了升级到 Bootstrap 4,我必须更改大约 1400 个显示/隐藏。有人知道问题是什么,或者有一个简单的解决方案可以在不更改 1400 行代码的情况下解决这个问题吗?

$(document).ready(function() {
  $("#hide").click(function() {
    $("p").hide();
  });
  $("#show").click(function() {
    $("p").show();
    //$("p").removeAttr("hidden");
  });
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<p hidden>If you click on the "Hide" button, this paragraph should disappear.</p>
<button id="hide">Hide</button>
<button id="show">Show</button>

【问题讨论】:

    标签: jquery bootstrap-4 show-hide


    【解决方案1】:

    您应该首先在头中包含指向 bootstrap.css 代码的链接标签,然后在任何标签的 en 和结束正文标签之前,您必须按顺序添加 em> Jquery.js popper.js(如果在您的代码中使用),然后是 bootstrap.js 文件

    【讨论】:

    • 谢谢 Med Okl!
    • 嗨 Med Okl。我改变了顺序,先添加了jQuery.js和popper.js,但是显示/隐藏仍然不能正常工作..
    【解决方案2】:

    它不起作用,因为Bootstrap 库首先加载,而jQuery 功能没有首先加载。

    尝试改变顺序,如 jQuery > Boostrap

    $(document).ready(function() {
      $("#hide").click(function() {
        $("p").hide();
      });
      $("#show").click(function() {
        $("p").show();
        //$("p").removeAttr("hidden");
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <p hidden>If you click on the "Hide" button, this paragraph should disappear.</p>
    <button id="hide">Hide</button>
    <button id="show">Show</button>

    【讨论】:

    • 谢谢 cursorrux!
    • 嗨 cursorrux。您的代码 sn-p 看起来可以正常工作,但实际上并没有使用 Bootstrap。如果您将 rel="stylesheet" 添加到链接标记,它将更改为引导按钮,但显示/隐藏不再起作用。
    【解决方案3】:

    一切正常,您需要先包含 jquery,然后再包含 bootstrap.js

    $(document).ready(function() {
      $("#hide").click(function() {
        $("#test").removeClass('d-block').addClass('d-none');
      });
      $("#show").click(function() {
        $("#test").removeClass('d-none').addClass('d-block');
      });
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <p id="test" class="d-none">If you click on the "Hide" button, this paragraph should disappear.</p>
    <button id="hide">Hide</button>
    <button id="show">Show</button>

    【讨论】:

    • 谢谢万尼亚!
    • Vanya,我注意到在你的代码中

      标签没有隐藏属性。当您添加隐藏属性时,它不再起作用。这就是我遇到的问题,我们在启动时隐藏了数百个元素。

    • Gru1,我更新了我的代码,添加了引导类 'd-none' 和 'd-block' 以使用元素的可见性,请立即检查
    • 谢谢 Vanya,您的代码可以按我的需要工作。不幸的是,我需要更改数百行代码才能将隐藏属性转换为 d-none 类。如果您更改为 Bootstrap 3.4.1,我的代码可以工作,但 Bootstrap 4 中的某些内容会破坏它。我需要弄清楚那是什么,以便我可以尝试覆盖它。再次感谢。
    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多