iOS7中jQuery移动刷卡事件的不稳定行为
我有一个小脚本,它使用jQuery Mobile的iOS7中jQuery移动刷卡事件的不稳定行为,jquery,jquery-mobile,ios7,swipe,Jquery,Jquery Mobile,Ios7,Swipe,我有一个小脚本,它使用jQuery Mobile的swipeleft和swiperight事件来更改div元素中的文本。由于将各种苹果设备升级到iOS7,它无法正常工作 我已经设置了一个简单的小提琴来重现这个问题。 示例jQuery 样本标记 0 0 如果您在每个div.score上多次swipleft或swiperight,它会开始表现不稳定,在事件触发之前会有很大的延迟,有时直到您再次与屏幕交互(滚动/触摸等)时才会触发 我很确定这不是我测试过的单个设备所特有的,并且在不同的设备上(2x
swipeleft
和swiperight
事件来更改div
元素中的文本。由于将各种苹果设备升级到iOS7,它无法正常工作
我已经设置了一个简单的小提琴来重现这个问题。
示例jQuery
样本标记
0
0
如果您在每个div.score
上多次swipleft
或swiperight
,它会开始表现不稳定,在事件触发之前会有很大的延迟,有时直到您再次与屏幕交互(滚动/触摸等)时才会触发
我很确定这不是我测试过的单个设备所特有的,并且在不同的设备上(2x iPhone 5s、iPhone 5、iPhone 4、iPad第二代和iPad第四代)都得到了相同的结果
在升级到iOS7之前,它工作得非常完美,我尝试过搜索,看看是否有其他人遇到过这个问题,或者看看它是否是iOS7中Safari Mobile的已知错误,但我找不到任何东西
如果有人能提供解释或可能的解决方案,我将不胜感激。使用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);
});
没错,我刚刚在iPhone5 iOS 7.0.2上测试过。也许这与Safari的新更新有关,即向右滑动会返回到上一页。我建议不要使用左/右滑动。。现代移动浏览器现在将其归因于切换到上一个/下一个选项卡。。在iOS7和Android ChromeI上测试,它将水平阈值修改为20px而不是30px(默认值),性能更好,但当然更敏感。
<div id="container">
<div class="score">0</div>
<div class="score">0</div>
</div>
$('#container').on('swipeleft swiperight', '.score', function(e) {
var $this = $(this);
setTimeout(function() {
$this.text( parseInt($this.text(), 10) + (e.type == 'swipeleft' ? -1 : +1) );
}, 0);
});