Javascript jquery hide()方法在tablet/mobile上不起作用
我有一个JS函数,它只显示一个li元素,并根据设备检测条件隐藏包含在无序列表中的所有其他li元素 HTML 我尝试在循环中使用alert,检测功能与一个附加功能一起正常工作Javascript jquery hide()方法在tablet/mobile上不起作用,javascript,jquery,ipad,tablet,browser-detection,Javascript,Jquery,Ipad,Tablet,Browser Detection,我有一个JS函数,它只显示一个li元素,并根据设备检测条件隐藏包含在无序列表中的所有其他li元素 HTML 我尝试在循环中使用alert,检测功能与一个附加功能一起正常工作show_tab_content('listID')除了jqueryhide()method$('ul#menu>li')之外,所有这些似乎都可以正常工作 我尝试添加else条件来检查它是否不是移动设备,并且脚本在桌面浏览器上运行良好 function deviceDetectionScript() { var mo
show_tab_content('listID')代码>除了jqueryhide()
method$('ul#menu>li')之外,所有这些似乎都可以正常工作代码>
我尝试添加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()方法在移动设备/平板电脑上也能正常工作?在处理移动设备时,我也遇到了一些问题
你能试试这个代码吗
$('ul#menu > li').not('#mainMenuGroup_poker').each(function(){
var unwanted_li = $(this);
unwanted_li[0].style.display = 'none';
});
我还没有测试上述代码,但我认为它会起作用
要添加,不需要的_li的零索引具有对象的DOM引用
***准确的问题和解决方案***
经过长时间的调查,这就是为什么手机不能正常工作的确切原因
在这种情况下,两个函数并行工作。一个在JS开始执行时调用,另一个在document.ready上调用
在这个场景中,document.ready甚至在另一个函数停止工作之前就被调用了,因此这个函数没有可以隐藏的li
例如(已更改函数名称以保密详细信息)
第1245行
<script type="text/javascript">
abc(false,true); // this is the function which was actually adding the li s
</script>
abc(假,真);//这是实际添加li s的函数
第1456行
<script type="text/javascript">
// Device detection
$(document).ready(function() {
hidingScript();
});
</script>
//设备检测
$(文档).ready(函数(){
隐藏脚本();
});
所以,在上面的例子中,hidingScript甚至在abc停止加载html之前就开始执行了。为了防止这种情况发生,建议采取以下措施:
<script type="text/javascript">
// Device detection
$(document).ready(function() {
abc();
hidingScript();
});
</script>
//设备检测
$(文档).ready(函数(){
abc();
隐藏脚本();
});
**如果abc正在调用一个ajax,而ajax随后又附加了html,那么您需要在ajax调用的成功事件中调用hidingscript
此更改已经过验证,并且运行良好。这就是.hide()
的基本功能。对。但是如果他使用hide to jQuery引用而不是DOM引用,那么可能是其他JS的一部分的javascript事件将不会被触发。但是如果他用DOM裁判躲起来,他们会被触发。我不知道你在说什么。没有与隐藏元素或更改其样式相关的事件。jQuery并没有使用魔法来完成它的工作,当您调用.hide()
时,它只是将显示样式设置为none
,就像您的代码一样。Barmar,正如下面的代码一样,您完全可以在hide$('#foo').on('hide',function(){console.log('foo is hidden'))上添加事件;jQuery绝对充满魔力:)在移动设备上不会触发此类事件。我不确定这种行为的原因。但这是我之前遇到的问题,并按照建议的解决方案解决了这个问题
<script type="text/javascript">
// Device detection
$(document).ready(function() {
hidingScript();
});
</script>
<script type="text/javascript">
// Device detection
$(document).ready(function() {
abc();
hidingScript();
});
</script>