所以我有一个导航菜单,可以在纵向或横向观看平板电脑时更改样式。它将最后几个菜单项折叠到另一个下拉菜单中。然而,菜单不会在方向更改时更新,只有在刷新后才会更新。
Jquery Modernizr代码:
if(Modernizr.mq('(max-device-width: 800px) and (orientation: portrait)')){
// portrait stuff
// unhides last few menu items
$('#menu-primary-items > li:nth-last-child(-n+3)').css('display', 'block');
// remove hide and first child class originally assigned to it from it's ul parent
// then add the more list item to the end of the nav menu
$('.moreItem').removeClass('hide first-child').appendTo('#menu-primary-items');
// grab the last two items of the nav menu and insert into the more list item menu
$('.topNavigation .toplevel').slice(-2).appendTo('.moreMenu');
}
有什么建议吗?
答案 0 :(得分:6)
所以似乎将函数包装在resize侦听器中使它工作!当有一个else语句时,似乎也工作得更好。只需要在其他设备上进行进一步测试。
更新的代码:
$(window).bind('resize', function(){
if(Modernizr.mq('(max-device-width: 800px) and (orientation: portrait)')){
// portrait stuff
// unhides last few menu items
$('#menu-primary-items > li:nth-last-child(-n+3)').css('display', 'block');
// remove hide and first child class originally assigned to it from it's ul parent
// then add the more list item to the end of the nav menu
$('.moreItem').removeClass('hide first-child').appendTo('#menu-primary-items');
// grab the last two items of the nav menu and insert into the more list item menu
$('.topNavigation .toplevel').slice(-2).appendTo('.moreMenu');
} else if(Modernizr.mq('(max-device-width: 1280px) and (max-device-height: 800px) and (orientation: landscape)') || Modernizr.mq('(max-device-width: 1024px) and (orientation: landscape)')){
$('.moreMenu').children().appendTo('#menu-primary-items');
$('.moreItem').addClass('hide first-child').appendTo('.moreItemHolder');
$('#menu-primary-items > li:nth-last-child(-n+3)').css('display', 'block');
}
});