3

我有一个小脚本,它利用 jQuery Mobileswipeleftswiperight事件来更改div元素中的文本。由于将各种 Apple 设备升级到 iOS7,它无法正常运行。

我在这里设置了一个简单的小提琴来重现问题

示例 jQuery

$('#container').on('swipeleft swiperight', '.score', function(e) {
    $(this).text( parseInt($(this).text(), 10) + (e.type == 'swipeleft' ? -1 : +1) );
});

示例标记

<div id="container">
    <div class="score">0</div>
    <div class="score">0</div>
</div>

如果您swipeleftswiperight每个人多次div.score,它开始表现不正常,在事件触发之前有很大的延迟,有时它根本不会触发,直到您再次与屏幕交互(滚动/触摸等)

我很确定这并不是我测试过的单个设备所特有的,并且在各种设备(2x iPhone 5s'、iPhone 5、iPhone 4、iPad 2nd gen 和 iPad 4th gen)上得到了相同的结果。

这在升级到 iOS7 之前完美运行,我尝试搜索是否有其他人遇到过这个问题,或者查看它是否是 iOS7 中 Safari Mobile 的已知错误,但我找不到任何东西。

如果有人可以提供解释或可能的解决方案,我将不胜感激。

4

1 回答 1

0

使用setTimeout()似乎可以解决问题:

$('#container').on('swipeleft swiperight', '.score', function(e) {
  var $this = $(this);
  setTimeout(function() {
    $this.text( parseInt($this.text(), 10) + (e.type == 'swipeleft' ? -1 : +1) );
  }, 0);
});

一些有用的信息可以在这里找到

这是一个小提琴

于 2013-10-04T14:55:06.477 回答