2014-09-10 48 views
0

我正在使用JS/jQuery的响应菜单。菜单的工作,但如果你的“移动”区域(1,024像素)内调整的窗口中,下拉选项卡的功能切换会随机停止工作..窗口调整大小功能随机不工作

下面是脚本:

$(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

你必须在事件处理的事件处理程序,重构代码如下

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

由于调整大小事件触发数百个,甚至千计的时候,窗口大小,你刚刚增加了几个千点击处理程序。

很多很多单击处理被相互抵消,因此只有当你有一个奇数点击处理程序,当你结束了偶数单击处理的工作,例如当resize事件火灾1032次,toggle效应将被取消。

+0

菜单切换功能始终有效,它是导致错误的#menuM .has-sub click功能。但是,如果我把它放在$(document).ready()中;功能,它根本不起作用。 – 2014-09-10 16:43:08

+0

你在这两个函数中都有同样的问题,我只是选择了第一个来说明。你有事件处理程序的内部事件处理程序调整大小,它永远不会正常工作,**永远不会**! – adeneo 2014-09-10 16:49:17

+0

任何想法,为什么点击处理程序不工作时,它被放在调整大小功能,然后呢? – 2014-09-10 16:52:55