【问题标题】:jQuery click fallback sans hover ipadjQuery click fallback sans hover ipad
【发布时间】:2026-01-06 01:50:02
【问题描述】:

我希望在您将鼠标悬停在某物上(和取消悬停)时调用一个函数。但是,我也希望没有悬停功能的 ipad(等)用户可以访问它。所以我希望点击后备成为可能。我该如何做到这一点?请注意,如果悬停有效,我不希望人们能够点击它。这是我目前所拥有的,非常接近:

var collapsed=1, noHover=false;
$('#deeper').hover(function() {deeper();});
$('#deeper').click(function() {if (collapsed || noHover) {
  deeper();
  noHover=true;
}});
function deeper() {
  if (collapsed == 1) {
    collapsed = 0;
    $(this).children().show();
  } else {
    collapsed = 1;
    $(this).children().hide();
  }
}

但是,这会失败 - 如果在页面加载时将鼠标悬停在 #deeper 上并且在移动鼠标之前单击(似乎需要移动鼠标才能触发 .hover),则 noHover 变为 true,从而可以进行单击,以及悬停。

一定有更好的方法吗?谢谢!

【问题讨论】:

  • 谢谢你。我实际上通过向 .hover 事件添加更多内容来解决我自己的问题: $('#deeper').hover(function() {noHover=false;vbg = 1;deeperEd();},function() {noHover=false ;vbg = 0;deeperEd();});

标签: jquery ipad click hover


【解决方案1】:

点击时 iPad 会触发触摸事件。一种选择是使用这些而不是单击,并且不传播到单击事件(或使用全局变量来跟踪单击/触摸状态)

触摸的工作原理很像点击。有关更多信息,请参阅这篇文章: http://htmlpad.wordpress.com/2010/02/12/tracking-touch-events-on-the-ipad/

【讨论】:

    【解决方案2】:

    您可能想查看 jQuery Touchable/Hoverable plugin,它统一了不同平台上的触摸和鼠标事件(可触摸)和悬停事件(可悬停),例如台式机和带有触摸屏的移动设备。

    【讨论】: