【发布时间】:2014-09-20 13:18:51
【问题描述】:
我有一个 JS 函数,它只显示一个 li 元素并隐藏所有其他 li 元素,这些 li 元素包含在基于设备检测条件的无序列表中。
HTML
<ul id="menu">
<li id="mainMenuGroup_mostPopular"></li>
<li id="mainMenuGroup_slots"></li>
<li id="mainMenuGroup_table"></li>
<li id="mainMenuGroup_roulette"></li>
<li id="mainMenuGroup_poker"></li>
<li id="mainMenuGroup_mobileiOS"></li>
<li id="mainMenuGroup_mobileAndroid"></li>
<li id="mainMenuGroup_mobileWinPhone"></li>
</ul>
JS
function deviceDetectionScript() {
var mobileDetection = new MobileDetect(window.navigator.userAgent);
if (mobileDetection.mobile()) {
if (mobileDetection.os() == 'iOS') {
alert('iOS detected'); //alert is working fine on ipad
$('ul#menu > li').not('#mainMenuGroup_mobileiOS').hide(); // this is not working
show_tab_content('mobileiOS'); // this function makes the selected li active - working fine
}
else if (mobileDetection.os() == 'AndroidOS') {
alert('Android detected'); //alert is working fine on android tab
$('ul#menu > li').not('#mainMenuGroup_mobileAndroid').hide(); // this is not working
show_tab_content('mobileAndroid'); // this function makes the selected li active - working fine
}
else if (mobileDetection.os() == 'WindowsMobileOS' || mobileDetection.os() == 'WindowsPhoneOS') {
alert('windows detected'); //alert is working fine on windows phone
$('ul#menu > li').not('#mainMenuGroup_mobileWinPhone').hide(); // this is not working
show_tab_content('mobileWinPhone'); // this function makes the selected li active - working fine
}
}
}
我尝试在循环内使用警报,并且检测与一个附加功能 show_tab_content('listID'); 一起工作正常,除了 jquery hide() 方法 $('ul#menu > li').not('#listID').hide(); 之外,所有这些似乎都工作正常。
我尝试添加 else 条件来检查它是否不是移动设备,并且脚本在桌面浏览器上运行良好。
function deviceDetectionScript() {
var mobileDetection = new MobileDetect(window.navigator.userAgent);
if (mobileDetection.mobile()) {
if (mobileDetection.os() == 'iOS') {
// Same as above
}
else if (mobileDetection.os() == 'AndroidOS') {
// Same as above
}
else if (mobileDetection.os() == 'WindowsMobileOS' || mobileDetection.os() == 'WindowsPhoneOS') {
// Same as above
}
}
else {
alert('Desktop detected'); //alert is working fine on desktop
$('ul#menu > li').not('#mainMenuGroup_poker').hide(); // this is working fine on desktop
show_tab_content('poker'); // this function makes the selected li active - working fine
}
}
我需要确保 hide() 方法也适用于手机/平板电脑吗?
【问题讨论】:
标签: javascript jquery ipad tablet browser-detection