我正在使用JS / jQuery处理响应式菜单。该菜单有效,但如果您在“移动设备”中调整窗口大小。区域(1024px),用于切换的下拉选项卡的功能将随机停止工作..
这是脚本:
$(document).ready(function(){
function mobile(){
$('.menu-toggle').click(function(){
$('#menuM').toggle();
});
}
$(window).resize(mobile);
mobile();
function resMenu() {
var sTest = $('#sizeTest').css('float');
$('#sizeTestText').text("current sizeTest = " + sTest);
if (sTest === 'left') {
$('nav').attr('id', 'menuM');
$('#menuM').hide();
$('#menuM .has-sub').click(function(e) {
e.preventDefault();
$('#menuM ul li').not($(this).parent()).removeClass('tap');
$(this).parent().toggleClass('tap');
});
}
else {
$('nav').attr('id', 'menu');
$('#menu').show();
$('#menuM ul li').removeClass('tap');
}
var navTest = $('nav').attr('id');
$('#linkTest').text("current nav id = " + navTest);
}
$(window).resize(resMenu);
resMenu();
});
非常感谢任何帮助。
答案 0 :(得分:1)
在事件处理程序中有一个事件处理程序,重构的代码看起来像
$(window).resize(function() {
$('.menu-toggle').click(function(){
$('#menuM').toggle();
});
});
由于resize事件在调整窗口大小时会触发数百甚至数千次,因此您只需添加几千个点击处理程序。
许多点击处理程序正相互取消,因此只有当您拥有奇数个点击处理程序时,才能使用,例如当您最终使用偶数个点击处理程序时当resize事件触发1032次时,toggle
效果将被取消。