带有两个元素选择器的jQuery委托

带有两个元素选择器的jQuery委托,jquery,mobile,Jquery,Mobile,如果我的站点是在触摸设备上查看的,我试图禁用与悬停事件相关的功能。如果设备是触摸式,则我的身体标签有“.touch”,如果没有触摸,则有“.no touch” 当我用touch类编写这样的委托函数时 $('.no-touch .list').delegate('img', 'hover', function() { ... } 即使我没有使用触摸设备,它也会停止工作。另外,在Chrome开发者工具中,当我查看元素时,body标签上有touch类,而在源代码视图中body标签没有该类。这可能是问

如果我的站点是在触摸设备上查看的,我试图禁用与悬停事件相关的功能。如果设备是触摸式,则我的身体标签有“.touch”,如果没有触摸,则有“.no touch”

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

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

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

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

$('.no-touch,  .list').delegate('img', 'hover', function() {
...
}
  • 取消对body标记的删除--不管它的当前选择器是什么
  • 在处理程序中检查它的类。当它被激发时,根据它所属的类采取不同的逻辑分支

  • $('.no touch,.list')
    这不是针对两个选择器吗?我尝试仅当.list位于带有.no touch的body元素中时才使用函数trigger
    $('whateverSelectorIsRelevantNow').undelegate('img', 'hover', function() {
    ...
    }