jQuery orientationchange 功能不工作

jQuery orientationchange function not working

宽度低于 800 像素时,我的 #main_navigation 在媒体查询中被 CSS display: none 隐藏了。单击菜单图标(在 800 像素以下可见)会触发此 jQuery 脚本:jQuery('#main_navigation').slideToggle(300); 它将 style:'display: block' 插入到该标记中,再次单击时,它会变为 style:'display: none'

现在,例如,当我使用 1024x768 tablet/iPad 时,在横向模式下,菜单会定期显示(作为水平列表),在纵向模式下,它会隐藏(由菜单图标表示)并在我单击菜单图标。

但是当我 click/tap 在纵向模式下图标两次(显示,然后隐藏)然后将平板电脑变成横向模式时,图标(由于样式表)显示常规菜单(由于jQuery设置的style:'display: none')属性:根本没有菜单!

所以我插入了这个函数,希望在转动设备时简单地 delete/remove style 属性,从而使菜单在 800px 宽度以上再次可见(即应用常规样式表和媒体查询):

jQuery(window).on('orientationchange', function () {
    jQuery('#main_navigation').removeAttr('style');
});

但是:它不起作用,我的菜单标签仍然包含style:'display: none',因此在描述的情况下没有可见的菜单。哪里出错了?

尝试在调整显示时使用有关当前宽度的条件:

如果 orientationchange 不起作用(应该起作用),请尝试添加 resize 事件。

jQuery(window).on('orientationchange resize', function () {
  if(jquery("body").width()>768){  // Make sure to test that width... Just a suggestion here.
    jQuery('#main_navigation').show();
  }
});