javascript - 在移动设备和桌面设备之间切换悬停下拉菜单

标签 javascript jquery html css twitter-bootstrap

我有一些简单的 JS,可以根据浏览器的宽度删除或​​添加 html。如果它在移动设备中,则应删除属性 data-hover。如果宽度在桌面,则应添加该属性。

到目前为止效果很好,但问题是 Bootstrap 无法识别 data-hover 已被删除。当用户的鼠标离开下拉菜单时,下拉菜单仍会关闭。需要明确的是,当浏览器窗口宽度低于 768 像素时,当用户的鼠标离开下拉菜单时,我希望下拉菜单保持打开状态。

出了什么问题,我该如何解决?

JS

$(document).ready(function () {
  $( window ).resize(function() {
    if ($( window ).width() < 768) {
      $('.dropdown-toggle').removeAttr('data-hover');
    } else {
      $('.dropdown-toggle').attr('data-hover', 'dropdown');
    }
  });
});

HTML

<a class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown" role="menu" aria-expanded="false" href="/courses">
  Courses               
</a>

<ul class="dropdown-menu courses-dropdown">
  <li>hello</li>                            
</ul>

最佳答案

您可以像这样将其重新分配给任何内容,而不是完全删除该属性:

$('.dropdown-toggle').attr('data-hover', '');

如果没有为该属性分配值,它不应该做任何事情。

关于javascript - 在移动设备和桌面设备之间切换悬停下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949286/

相关文章:

javascript - 在 ng-repeat 中显示字符串输出

javascript - 三元运算符中的三元运算符是否可能

javascript - Bootstrap容器中的背景色在Electron中不起作用

html - 表格内容溢出到其他div

javascript - 让 jQuery 立即改变高度而不是在第二次运行时改变高度?

javascript - 谷歌地图 - 沿直线多段线获取 X% 的经纬度

javascript - 如何在 javascript cookie 中存储访问 token 值并使用 AJAX 调用将该 token 传递给 header

jquery - 使用 multiscroll.js。到达幻灯片末尾后想要反转箭头

jquery - 如何使用 CSS3 转换获得与 jQuery slideToggle 相同的效果?

jquery - 从 div 切出的 CSS 椭圆形