jQuery委托有两个元素选择器

时间:2013-04-29 20:50:04

标签: jquery mobile

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

当我使用触摸类

编写这样的委托函数时
$('.no-touch .list').delegate('img', 'hover', function() {
...
}

即使我没有使用触摸设备,它也会停止工作。另外,在Chrome开发者工具中,当我查看元素时,body标签上有触摸类,在Source视图中,body标签没有该类。这可能是问题的一部分吗?

2 个答案:

答案 0 :(得分:1)

当你将一个委托的处理程序分配给一个找到body标签的选择器时,改变body的类是不够的,以便从该处理程序中删除它。你必须:

  1. 取消身体标记 - 无论当前选择器是什么
  2. 在处理程序中检查它的类。当它被触发并根据它具有哪个类时采用不同的逻辑分支
  3. DEMO

    $('whateverSelectorIsRelevantNow').undelegate('img', 'hover', function() {
    ...
    }
    

答案 1 :(得分:0)

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