jquery - Bootstrap 3 下拉菜单 : on Hover and on Click

标签 jquery html css responsive-design twitter-bootstrap-3

我的导航栏上几乎所有的链接都是下拉菜单。我希望它们在大屏幕上出现在悬停时,但在小屏幕上出现在点击时。那可能吗?在寻找答案时,我遇到了这个:Bootstrap Menu: Dropdown on Hover for Desktop Only .这对我不起作用,因为我不希望整个下拉菜单在移动设备上不可见;我只希望它在单击而不是悬停时可见。

最佳答案

已编辑 @ouwen-huang 的回答很好,但由于 jQuery 是 bootstrap.js 的依赖项,你也可以按照 jQuery 的方式来完成,只需添加所有你想附加的事件,用引号分隔:

$('.dropdown').on('mouseenter mouseleave click tap', function() {
  $(this).toggleClass("open");
});

选择器基于标准的 Bootstrap 标记,直接取自文档,如下所示:

<li class="dropdown">
    <a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Action</a></li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Another action</a></li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Something else here</a></li>
        <li role="presentation" class="divider"></li>
        <li role="presentation"><a role="menuitem" tabindex="-1" href="http://twitter.com/fat">Separated link</a></li>
    </ul>
</li>

这里的要点是,如果您使用的是支持鼠标的设备(例如没有触摸功能的台式机),则会触发 mouseenter/mouseleave 事件,并且无需单击即可激活菜单。如果用户不在触发 mouseenter/mouseleave 事件的设备上,则当用户点击链接并且点击或点击处理程序处理下拉切换时,将触发点击或点击事件。

为准确起见进行了编辑。

关于jquery - Bootstrap 3 下拉菜单 : on Hover and on Click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685000/

相关文章:

ruby-on-rails - Rails 渲染 ajax 错误

javascript - event.preventDefault() 在 Android 的按键事件中不起作用

javascript - 从区域中取消附加 JQuery 拖放项而不删除或隐藏它

javascript - 了解用户正在 iframe 中浏览哪个页面

php - Drupal 五星级模块,根据变量值动态更改 star.gif 图像

javascript - 检查用户加载的图像宽度的函数随机返回 0

html - 如何让 a 标签垂直居中到 footer 标签?

javascript - Selectize.js "Uncaught TypeError: Cannot read property ' extend' of undefined"

javascript - Safari 12 css 动画效果不佳

javascript - 在图标状态更改时更改图像 :Jquery