You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS设备中jQuery点击显示/隐藏Div功能异常求助

iOS设备上jQuery点击显示/隐藏Div失效的解决方法

问题根源

iOS Safari对非原生可交互元素(如<div>)的click事件支持存在兼容性问题:默认情况下这类元素不会被识别为可点击对象,且click事件存在300ms延迟,导致事件无法正常触发。

解决方案

以下几种方法可解决该问题,任选其一即可:

1. 同时绑定touchstart和click事件

修改事件绑定逻辑,同时监听触摸和点击事件,确保iOS设备能正确响应:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
  // 封装事件处理函数,避免重复代码
  function showContent() {
    $(".pup").show();
    $(".pdo").hide();
    $(".team").show();
  }

  function hideContent() {
    $(".pup").hide();
    $(".pdo").show();
    $(".team").hide();
  }

  // 同时绑定touchstart和click事件,阻止重复触发
  $(".pdo").on('touchstart click', function(e) {
    e.preventDefault();
    showContent();
  });

  $(".pup").on('touchstart click', function(e) {
    e.preventDefault();
    hideContent();
  });
</script>
<style>
  .team, .pup {
    display: none;
  }
  /* 关键:添加cursor让Safari识别为可点击元素 */
  .pdo, .pup {
    cursor: pointer;
  }
</style>

2. 用CSS标记元素为可交互状态

给目标元素添加cursor: pointer,让Safari将其视为可点击元素,配合原有click事件即可生效:

.pdo, .pup {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent; /* 可选:移除iOS点击高亮效果 */
}

同时建议将jQuery版本升级到3.x系列,修复旧版本的iOS兼容bug。

3. 改用事件委托绑定事件

如果元素是动态生成的,事件委托能确保事件正确绑定到目标元素:

$(document).on('touchstart click', '.pdo', function(e) {
  e.preventDefault();
  $(".pup").show();
  $(".pdo").hide();
  $(".team").show();
});

$(document).on('touchstart click', '.pup', function(e) {
  e.preventDefault();
  $(".pup").hide();
  $(".pdo").show();
  $(".team").hide();
});

内容的提问来源于stack exchange,提问作者Prabhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:22:43