窗口调整大小功能随机不起作用

时间:2014-09-10 16:27:06

标签: javascript jquery resize

我正在使用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();
});

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在事件处理程序中有一个事件处理程序,重构的代码看起来像

$(window).resize(function() {
    $('.menu-toggle').click(function(){
        $('#menuM').toggle();
    });
});

由于resize事件在调整窗口大小时会触发数百甚至数千次,因此您只需添加几千个点击处理程序。

许多点击处理程序正相互取消,因此只有当您拥有奇数个点击处理程序时,才能使用,例如当您最终使用偶数个点击处理程序时当resize事件触发1032次时,toggle效果将被取消。