我是使用 jQuery 的新手,并尝试编写一个基本菜单系统,在屏幕宽度大于 480 像素时,通过将鼠标悬停在 li 标签上来展开子菜单,在宽度小于 480 像素时,通过单击 li 标签来展开子菜单。
我尝试使用 Modernizr 检测媒体查询的能力,但是正如您从我的尝试中看到的那样,它失败了:
工作示例。.....将鼠标悬停在名为“属性”的 li 标签上
这个问题显然与代码没有调整屏幕大小有关,因为如果您以正确的宽度刷新浏览器,它在 > 480px 和 < 480px 下工作,但是当您调整浏览器大小时,这些功能仍然会尝试触发!
我的代码:
// Main nav dropdown animation
$(document).ready(function() {
function doneResizing() {
if(Modernizr.mq('screen and (min-width: 481px)')) {
$("#sub-menu").hide();
$("#show-investment-type-nav").hover(function() {
$(this).find("#sub-menu").stop(true, true).slideDown("fast");
}, function() {
$(this).find("#sub-menu").stop(true, true).fadeOut("fast");
});
}
else if(Modernizr.mq('screen and (max-width: 480px)')) {
$("#sub-menu").hide();
var next_move = "show";
$("#show-investment-type-nav").click(function() {
$('#sub-menu').slideToggle(100);
if (next_move === "show") {
$("body").addClass("nav-active");
$("#site-nav #icon").empty().html("");
$("#site-nav #nav-margin-down").animate({"margin-top": "163"}, 100);
next_move = "hide";
} else {
$("body").removeClass("nav-active");
$("#site-nav #icon").empty().html("");
$("#site-nav #nav-margin-down").animate({"margin-top": "0"}, 100);
next_move = "show";
}
});
}
}
var id;
$(window).resize(function() {
clearTimeout(id);
id = setTimeout(doneResizing, 0);
});
doneResizing();
});
关于为什么会发生这种情况的任何帮助都会很棒,它会帮助我学习!
干杯伙计们!