Safari Mobile 上的点击事件延迟

Click Event Delayed on Safari Mobile

这应该非常简单,特别是考虑到已经解决了许多类似的问题,但由于某种原因我无法让它工作。

我在一个页面上有 div 绑定到名为 "thing" 的 class。当用户单击带有 class "item" 的元素时,我希望立即删除所有带有 class "thing" 的 div。它在网络上运行良好,但在移动 safari 上却不行。在移动设备上,元素保留在 "click" 之后,直到我随后在页面上滑动。一旦我滑动 post-click,元素就会被删除。就好像 "click" 没有被视为 "touch"。

根据其他建议的解决方案,我添加了 <meta content="width=device-width, user-scalable=no" name="viewport">、"touchstart" 事件和 html {touch-action: manipulation;} css。

HTML

<div class="thing"></div>

JS

// On click
$(".item").on("click touchstart", function () {
    $(".thing").remove();
});

当用户 clicks/touchs 带有 class "item" 的元素时,我通过 ajax 进行 API 调用。我最终利用 ajax 中的成功函数来删除带有 class "thing" 的元素:

var success = function (response) {
        $(".thing").remove();
    }

这里最大的问题是具有 class "thing" 的元素在 API 成功调用 returns 之前不会被删除。当然,我更愿意在观察到点击事件后立即删除元素,但我无法让它在 Safari 移动设备上按预期工作。

该解决方案比等到用户第二次滑动才删除元素要好。