2012-10-10 63 views
0

我正在寻找让设备忽略我的菜单上的特定功能。菜单是垂直的,手风琴属性,在浏览页面时子菜单保持打开状态。设备忽略一块javascript

在设备上查看时,菜单位于页面顶部,且较小。我需要做的是点击该项目时,菜单再次关闭,菜单不包含内容。继承人的脚本保持它打开,我想我正在寻找一个IF(设备)忽略此行...

<script type="text/javascript"> 

$(function() { 
$("ul.menu-main > li").hover(function() { 
    //Don't do this again if the same menu is hovered. 
    if (!$(this).hasClass('selected')) { 
     //Ensure any open sub-menu is closed. 
     $("li.selected").children("ul").stop(true, true).slideUp(1000); 
     $("li.selected").removeClass('selected'); 
     //Open sub-menu 
     $(this).addClass('selected'); 
     $(this).children("ul").slideDown(1000); 

    } 
}); 
     //Keep sub-menu open when navigating pages. 
    if($('.active.parent > ul').length > 0) { 
     $('.active.parent > ul').show(); 
    } 
}); 
</script> 

我需要的,如果正在使用的设备是它忽略这一点。

if($('.active.parent > ul').length > 0) { 
     $('.active.parent > ul').show(); 

希望有道理?!

+2

“装置”是什么意思?什么样的设备? – feeela

回答

0

你可以检查一下该设备是有多宽,再展依赖于

if ($(window).width() > 960) { // if device is wider than 960px 
    if($('.active.parent > ul').length > 0) { // show menu 
      $('.active.parent > ul').show(); 
    } 
} 
+0

这很完美!它的工作原理就是我需要的。 – legoman

+0

请确保将此代码放入调整大小处理程序中 – superlukas

1

菜单听起来很像你正在构建一个负责任的网站。您可以使用matchMedia()和if-else语句为不同的媒体查询执行不同的功能。

下面是从他们的github回购的例子:

if (matchMedia('only screen and (max-width: 480px)').matches) { 
    // smartphone/iphone... maybe run some small-screen related dom scripting? 
} 

一个不错的选择是minwidth.js这让你定义的回调,不同宽度

minwidth(600, function() { 
    doSomethingLikeLoadFacebook(); 
}); 

或纯jQuery的...

$(document).ready(function() { 
    $(window).resize(function() { 
    if ($('.active.parent > ul').length > 0) { 
     if ($(window).width() > 960) { 
     $('.active.parent > ul').show(); 
     } else { 
     $('.active.parent > ul').hide(); 
     } 
    } 
    }); 
    $(window).trigger('resize'); 
});