点击应该触发 touchstart 和 touchend 两个事件,但是安卓手机中并没有触发 touchend,请问如何解决这个问题?
On Android ICS if no preventDefault is called on touchstart or the first touchmove, further touchmove events and the touchend will not be fired.
As a workaround we need to decide in the first touchmove if this is a scroll (so we don’t call preventDefault) and then manually trigger touchend.
<code class="language-text">var slideCouter = 1; var hasMoved = false; var checking = false; var hasMore = true; $(document).on('touchstart', function (e) { z = $(document).scrollTop(); x = event.targetTouches[0].pageY; }).on('touchmove', function (e) { e.preventDefault(); hasMoved = true; y = event.targetTouches[0].pageY; z += x - y; $(document).scrollTop(z); }).on('touchend', function (e) { if (x - y > 200 && !checking && hasMoved && hasMore) { checking = true; slideCouter++; $('.login').removeClass('none'); $.ajax({ url: "<?php echo $this->createUrl('/teacher/categoryMore');?>", type: "get", data: { "keyword": '<?php echo $keyword;?>', "page": slideCouter }, cache: false, success: function (data) { completecall(data); } }); } hasMoved = false; }); ============== 目前别的方法都会有或多或少的弊端,该方法的弊端就是滑动惯性被取消,自己写的效果会不那么流畅,但还算比较好的解决这个兼容问题。 </code>