0

如果在触摸设备上查看我的网站,我正在尝试禁用附加到悬停事件的功能。如果设备是触摸的,那么我的身体标签有'.touch',如果没有触摸它有'.no-touch'

当我用触摸类编写这样的委托函数时

$('.no-touch .list').delegate('img', 'hover', function() {
...
}

即使我不在触摸设备上,它也会停止工作。此外,在 Chrome 开发人员工具中,当我查看 Elements 时,body 标记上有 touch 类,而在 Source 视图中,body 标记没有该类。这可能是问题的一部分吗?

4

2 回答 2

1

当您将委托处理程序分配给某个找到主体标记的选择器时,仅更改主体的类以将其从该处理程序中删除是不够的。您必须:

  1. 取消对主体标签的委托——不管它的当前选择器是什么
  2. 在处理程序中检查它的类。当它被触发并根据它具有的类采取不同的逻辑分支时

演示

$('whateverSelectorIsRelevantNow').undelegate('img', 'hover', function() {
...
}
于 2013-04-29T21:39:40.437 回答
0
$('.no-touch,  .list').delegate('img', 'hover', function() {
...
}
于 2013-04-29T20:52:36.750 回答