【问题标题】:jQuery hide only works when toggling fullscreenjQuery 隐藏仅在切换全屏时有效
【发布时间】:2020-10-04 17:35:01
【问题描述】:

我想用 jQuery 切换隐藏“myDIV”。 在移动设备上完美运行,但在桌面上按下按钮时 仅当您在按下按钮后切换全屏时才有效,否则 它没有。以前有人遇到过这个问题吗?

这里是网站的链接:

https://mkt.partners/analytical/draft.html

按钮在第 616 行

<a onclick="javascript:toggler('myDIV');" class="btn btn-primary lookbook-action"><b>Ver más.</b></a>

我试图隐藏的 div 在第 618 行

<div id="myDIV" class="hidden">

CSS 类“隐藏”只是隐藏了 div

    <style type="text/css">
        .hidden {
     display:none;
}
    </style>

我的脚本在第 1460 行

    <script>
function toggler(divId) {
  $("#" + divId).toggle("slow");
}

</script>

【问题讨论】:

  • 嗨,欢迎来到 SO!请提供一些代码以使此问题可重现,以便其他人更轻松地找到您的问题的解决方案。
  • 我提供了一个链接,代码为mkt.partners/analytical/draft.html
  • 我知道,但其他人很难看到哪个按钮有问题以及它使用了哪些具体代码。
  • 你完全正确!对不起,我是新来的,我提供了更多详细信息,谢谢您的建议!
  • 你好,隐藏类的CSS是什么?

标签: javascript html jquery css


【解决方案1】:

来自 JQuery 的文档:

没有参数,.toggle() 方法只是切换元素的可见性 [...] 通过更改 CSS 显示属性,匹配的元素将立即显示或隐藏,没有动画。

这意味着JQuery是直接修改inline样式属性。

您的问题源于您在另一个位置(您的 CSS)中将此项目的 display 属性设置为 none。因此,无论 JQuery 做什么,您的按钮都会 100% 隐藏。

这就像你用窗帘盖住了某个东西,然后尝试用另一个窗帘盖住它再次隐藏它......只是拉回第二个并想知道为什么你的对象不可见 - 它仍然存在被第一道帘子盖住了!


去掉多余的 CSS(hidden 类),让 JQuery 处理隐藏。

function toggler(divId) {
  $("#" + divId).toggle("slow");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="myDIV" style="background-color: red; width: 5em; height: 5em;"></div>

<!-- Use a button, not an anchor, since this isn't a link -->
<button onclick="toggler('myDIV');" class="btn btn-primary lookbook-action">
  <!-- <b> tags are deprecated, use strong instead -->
  <strong>Ver más.</strong>
</button>

整个“这适用于桌面,但只有当你全屏时,它总是适用于移动设备”这件事让我觉得你在某些媒体查询或其他东西背后遇到了这个 CSS 事故。

我测试了您提供的实时链接,只需在我的 DevTools 中的 .hidden 类中关闭 display: none 即可解决问题,Ver más 按钮成功隐藏了 div

【讨论】:

  • 非常感谢!该按钮现在可以正常工作,但我还有另一个问题。我需要默认隐藏 div,这就是我添加额外 CSS 的原因。你知道如何反转切换的默认状态吗?
  • @SoporteMercodigital 如果是这种情况,我可能会做的不是使用.toggle().hide(),而是保留CSS 类,而是使用JQuery 来切换该类本身。使用$('#' + divID').toggleClass('hidden')。 :-)
  • 我试过那样做,现在按钮根本不起作用 T.T halp
  • 你说的方法目前在原链接上传
  • @SoporteMercodigital 在您当前的示例中,您有$(div.myDIV)。这将基于 class myDIV 进行选择。你想要div#myDIV
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多