我不完全确定我是否了解如何使用Jquery检测触摸屏和更改类。所以无论如何,我有一个带有下拉列表的bootstrap导航菜单,显示在' hover'在桌面上。我已设法使用以下方法禁用触摸设备上的悬停功能:
if (!("ontouchstart" in document.documentElement)) {
document.documentElement.className += " no-touch"; }
现在,我想在下拉项中的类中添加回来,再次启用切换下拉菜单。这就是我想出的:
$('.dropdown a').on('touchstart', function(){
$(this).addClass('dropdown-toggle');
$(this).data('toggle','dropdown');
});
显然它是在ipad上工作,但不是在我的火上。为什么上面的第一个代码可以工作,但第二个代码不在这里?
答案 0 :(得分:1)
' ontouchstart'是苹果处理触摸事件的方式,所以仅限iOS。
对于所有其他设备,您必须使用' onpointerdown'。
在这里雄辩地提到http://www.stucox.com/blog/you-cant-detect-a-touchscreen/ 浏览器无法真正检测到是否存在具有触控功能的显示器,因此您必须假设所有设备都具有适当的触控功能和代码。
为了使其变得更加复杂,尝试将触摸与点击分开,使用触摸屏笔记本电脑离开窗户。
我编写了jQuery插件,统一了所有设备的触摸/悬停/点击行为,这些设备完全按照您的方式进行操作。通过根据你想要做的事情交换课程。
本文详细介绍了浏览器如何解释这些不同的交互。 http://fallingmonocle.com/monocle-toggle.php