javascript - 响应式移动菜单

标签 javascript jquery html css

我有一个函数,可以将类应用于 html 元素,还可以检测是否在 900px 宽度以下单击了下拉菜单。

当我将浏览器大小从桌面 View 调整到 900 像素以下时,我偶尔会发现下拉类“active-hit”未应用 - 这意味着菜单不会打开。有什么想法可能是为什么吗?我必须重新加载页面才能使其在移动 View 中工作。

// Add Mobile View Class to HTML ELEMENT below 900px
(function($) {
var $window = $(window),
    $html = $('html');
    $dropdown = $('.dropdown-nav > a');

function resize() {
    if ($window.width() < 900) {

      $dropdown.on('click', function(e){
        $(this).parent().toggleClass('active-hit');
        e.preventDefault();
        e.stopPropagation();
      });

      return $html.addClass('mobile-view');

    } else {
      $html.removeClass('mobile-view');
      $dropdown.parent().removeClass('active-hit');
    }

}
$window
    .resize(resize)
    .trigger('resize');
})(jQuery);

最佳答案

正如我在评论中提到的,窗口大小调整不会触发您的功能,但如果您想在测试目的中这样做,那么您可以尝试使用此:

$(window).resize(function() {
  resize();
});

这里正在工作 fiddle为你

关于javascript - 响应式移动菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703903/

相关文章:

javascript - 使用构造函数弹跳动画?

jquery - 捕获表单中的所有 HTML,包括没有帖子的文本字段值

javascript - 单击 html 文本输入的顶部或底部边缘时出现奇怪的光标放置行为

JavaScript 行为重用 : What side effects will this approach have?

javascript - 将禁用按钮存储在本地存储中

javascript - JQuery Mobile 和 link_to

javascript - 范围更改时更改按钮颜色

html - 将一个 div 置于另一个 div 之上

html - IE 7 表现奇怪还是只有我一个人

javascript - Vim、Javascript、DoctorJS (jsctags) 和 Taglist(源代码浏览)