javascript - javascript中的引导切换下拉菜单
问题描述
我有一个 bootstrap 4 下拉菜单,它在悬停时展开(切换)而不是单击。单击后,将跟随一个链接。(我知道,这是不好的做法)。现在我试图在支持触摸的设备上实现这一点,链接永远不会被跟踪,并且单击或触摸下拉菜单会被切换。
我已设法禁用该链接,但似乎无法切换菜单。这是我尝试过的:
JS
var button = jQuery('.btn-dropdown-link');
if ('ontouchstart' in window) {
button.click(function (e) {
e.preventDefault();
console.log('clicked / touched');
jQuery('#dropdownMenuButton').dropdown('toggle'); // this does not work?
});
}
HTML
<ul>
<li class="btn dropdown" id="dropdownMenuButton" aria-haspopup="true" aria-expanded="false">
<a class="btn btn-dropdown-link dropdown-toggle" href="/com">some link</a>
<ul class="dropdown-menu" id="dropdownDonateMenu" aria-labelledby="dropdownMenuButton">
<li><a href="#">example</a></li>
<li><a href="#">example</a></li>
<li><a href="#">example</a></li>
</ul>
</li>
</ul>
CSS
.dropdown:hover > .dropdown-menu {
max-height: 500px;
opacity: 1;
}
.dropdown .dropdown-menu {
transition: all 0.3s;
max-height: 0;
display: block;
overflow: hidden;
opacity: 0;
min-width: 100%;
}
e.preventDefault();
当我使用阻止链接时如何切换下拉列表?
编辑:我必须使用 JS
解决方案
您可以在具有 :hover 的同一位置上的 css 上添加 :active ,并且在 HTML 上您可以简单地删除 href
在 CSS 上是这样的:
.dropdown::active > .dropdown-menu, .dropdown::active > .dropdown-menu {
max-height: 500px;
opacity: 1;
}
在 HTML 上,您可以简单地删除
推荐阅读
- flutter - 企业项目在 Agora 的一个项目上是否开通了多个渠道?
- robotframework - 仅当测试套件中的一项测试失败时,如何返回主页?
- ios - SwiftUI 中的表单背景颜色不会改变
- c - 将时间从 UTC 更改为 C 中的本地时间
- python - 如何在python列表中随机选择更少的数字并使其每次都唯一
- java - 使用 Tomcat 将 http 重定向到 https 不起作用
- c - 将自定义结构作为参数传递会导致分段错误
- docker - 如何为使用 docker 的 --user 选项设置的 uid 安全地添加条目到 docker 容器的 /etc/passwd
- r - 不同数据集上的线性回归拟合(增强)
- android - React Native:安装到虚拟/物理设备失败