jQuery show()不会将Bootstrap d-none类变为可见

brjng4g3  于 2023-03-06  发布在  Bootstrap
关注(0)|答案(4)|浏览(168)

我99%肯定我错过了一些非常明显的东西。在下一个例子中,点击按钮应该会使包含.progress类的div可见。但是,它不起作用。

function func() {
  $('.progress').show();
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

<div class="progress d-none">
  No longer hidden!
</div>

<button onclick="func()">
  click me
</button>
whitzsjs

whitzsjs1#

这里的问题是Bootstrap 4中的d-none实用程序类将下一个CSS样式添加到.progress元素:

.d-none {
  display: none!important;
}

另一方面,当你从jQuery中调用show()方法时,它会将display: block样式添加到上述元素中。但是,前一个样式仍然优先于此样式,并且元素仍然隐藏。这是由于!important子句的缘故,有关详细信息,你可以阅读下一个链接:
What are the implications of using "!important" in CSS?
因此,另一种方法(或良好实践)是从要显示的项中删除d-none类。

function func()
{
    $('.progress').removeClass("d-none");
}

示例:

在下一个示例中,切换d-none类以更改.progress元素的可见性:
一个二个一个一个

ecr0jaav

ecr0jaav2#

jquery的show与bootstrap的d-none不兼容。您可以使用Collapse -https://getbootstrap.com/docs/4.1/components/collapse/-代替

qzlgjiam

qzlgjiam3#

当你不确定你的元素是如何隐藏的,使用Bootstrap的d-none,还是使用常规的display: none,但是你需要让它在任何情况下都可见,只需使用下面的代码:

$(el).removeClass("d-none").show();
polkgigr

polkgigr4#

您可以创建自己的函数,如下所示。

$.fn.bsShow = function(){
    $(this).removeClass('d-none');
}

$.fn.bsHide = function(){
    $(this).addClass('d-none');
}

然后你就可以使用普通的jQuery显示/隐藏函数了。

$(".progress").bsShow();
$(".progress").bsHide();

相关问题