安卓手机的touchend事件不触发问题

问题描述

$(document).on("touchstart touchmove",".btn-highlight",function(event){
        $(this).addClass("hover");
    }).on("touchend touchcancel",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });

起初想用这一段代码来模拟部分按钮的高光效果(就是点击一个按钮之后会有个不同的样式,类似PC的hover)

但是发现一个问题,就是在安卓手机上,下面的这个方法却经常不触发,非常的偶尔,着实令吾等烦恼。

后经查阅资料发现浏览器的默认事件影响了我们这个事件的触发。那么就涉及阻止默认事件了,很简单,加上event.preventDefault();

最终可用代码为

$(document).on("touchstart touchmove",".btn-highlight",function(event){
        $(this).addClass("hover");
        event.preventDefault();
    }).on("touchend touchcancel",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });

在css里面对.btn-highlight加上对应的样式就可以看到效果了,如按钮a与按钮b想显示不同的效果,那么

先给a和b都加上.btn-highlight

CSS中:

a.hover{/*第一种样式*/}

b.hover{/*第二种样式*/}

该问题续集~~~

发现这样写之后,如果那个按钮是链接呢???跳转不了,因为禁用默认事件了,现在把touchstart和touchmove分开写就OK了

$(document).on("touchstart",".btn-highlight",function(){
        $(this).addClass("hover");
    }).on("touchmove",".btn-highlight",function(event){
        event.preventDefault();
    }).on("touchcancel touchend",".btn-highlight",function(event){
        $(this).removeClass("hover");
    });
时间: 2024-10-30 21:23:43

安卓手机的touchend事件不触发问题的相关文章

彻底解决低端安卓手机touchend事件不触发(考虑scroll)

本次移动端开发时遇见了安卓4.2系统不能触发touchend的问题,有以下需求. 1. 横滑轮播图 2.下拉刷新页面内容 3.body滚动条不能失效 开始在轮播图touchmove事件中阻止了浏览器默认行为,此时touchend事件可以触发. //拖拽轮播图 parentNode.addEventListener('touchmove',function(e) { e.preventDefault(); }) 然后复制了一份在下拉刷新事件中(此时下拉刷新也OK了) //下拉刷新代码 docume

解决移动端页面滚动后不触发touchend事件

解决移动端页面滚动后不触发touchend事件 问题 在移动端页面进行优化时,一般使用touch事件替代鼠标相关事件.用的较多的是使用touchend事件替代PC端的click和mouseup事件. 可是,touchend事件在页面滚动时有个问题.在滚动完毕后,假设当前触点的位置所指的元素绑定了touchend事件,这时便会触发该元素的touchend事件,造成误操作. 解决方法 解决方法非常easy.就是在页面滚动时停止touchend事件冒泡.这样就能够防止触发touchend事件. 用法

移动端多点触摸touchend 事件没有正常触发

移动端触屏事件主要是touchstart,touchmove,touchend 执行顺序touchstart(开始) - touchmove(移动) - touchend(结束) for (var i = 0; i < dom.length; i++) { dom[i].addEventListener('touchstart', function (e) { ..... }, false); dom[i].addEventListener('touchend', function (e) {

安卓手机微信自带浏览器点击事件失效解决

在移动端做了个导航,长这样 原来结构是用的span <span class="menu_icon"> <img src="img/icon_1.png"> <p>导航</p> </span> 绑定用的是jquery的.click $('.menu_icon').click(function () { $("#nav-phone").stop().animate({right:"

安卓部分机型touch 事件失效的hack方式

常规写一段滑动代码,我们可能这么写 initEvent: function () { this.el.addEventListener("touchstart", this.touchStart.bind(this)); this.el.addEventListener("touchmove", this.touchMove.bind(this)); this.el.addEventListener("touchend", this.touchE

安卓手机定位研究

Android 基站定位源代码 经过几天的调研以及测试,终于解决了联通2G.移动2G.电信3G的基站定位代码.团队里面只有这些机器的制式了.下面就由我来做一个详细的讲解吧. 1 相关技术内容 Google Android Api里面的TelephonyManager的管理. 联通.移动.电信不同制式在获取基站位置的代码区别. 通过基站的基本信息,通过Google Gears获取对应的GPS经纬度. 通过Google Map API根据GPS经纬度获取当前位置. 2 目前存在的几个问题 由于得到的

安卓手机APP压力monkey测试

一.Monkey概述 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法.Monkey测试是Android平台下自动化测试的一种快速有效的手段. 二.环境配置 JDK配置:根据自己的电脑系统位数,选择适当的JDK,若自己电脑系统是32位,尽量也选择使用32位的JDK,在此以此为例进行详解.JDK

部分安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法

前端JS中使用XMLHttpRequest 2上传图片到服务器,PC端和大部分手机上都正常,但在少部分安卓手机上上传失败,服务器上查看图片,显示字节数为0.下面是上传图片的核心代码: HTML <input type="file" id="choose" capture="camera" accept="image/*"> JavaScript var filechooser = document.getEleme

Zepto.js touch模块深入分析 解决手机点击事件

源码: // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT license. ; (function($) { var touch = {}, touchTimeout, tapTimeout, swipeTimeout, longTapTimeout, longTapDelay = 750, gesture function swipeDirection(x1