【问题标题】:Hover and click events overlap in responsive menu响应式菜单中的悬停和单击事件重叠
【发布时间】:2015-06-17 15:06:49
【问题描述】:

我制作了一个 HTML5 响应式 2 级菜单,您可以看到 HERE。宽屏版本在悬停主菜单项时显示子菜单;窄屏(小于 768 像素)版本在单击主菜单项时显示子菜单。

做事件切换的函数是:

function horizVert() {
    var event;
    if ($(window).width() < 768) {
    event = "click";
    $('nav,.navcontainer').addClass("vertical").removeClass("horizontal");
} else {
    event = "hover";
    $('nav').removeAttr("style");
    $('nav,.navcontainer').addClass("horizontal").removeClass("vertical");
    }
    $('nav ul li').removeClass("active");
    $('nav ul a').on(event, function () {
        $(this).parents('li').toggleClass("active");
    });
}
horizVert();
$(window).resize(horizVert);

如您所见,如果您调整窗口大小,“事件切换”不会正确发生,并且窄菜单会对悬停做出反应。

我做错了什么?

谢谢!

【问题讨论】:

    标签: jquery css html menu responsive-design


    【解决方案1】:

    为什么不使用 css 3 通过媒体查询确定窗口宽度,然后相应地应用类?您将拥有一个流利的代码并且更容易理解。

    我建议你创建一个新类,或者甚至在现有的类中,添加媒体查询并在窗口低于 768 时应用新的 css。

    【讨论】:

    • 我希望菜单在悬停时对窗口宽度 > 768px 和点击窗口宽度
    • 首先,你应该看看你的代码是如何通过开发者工具做出反应的。确保按预期删除或添加所有 css/attr。然后根据屏幕宽度检查您的状况,因为问题在于您的状况。尝试使用 else if 语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多